2016-03-13 2 views
1

У многих людей была эта проблема, но представленные решения не помогли мне.UnicodeEncodeError только при подключении к файлу и только на некоторых компьютерах

На моей машине ubuntu скрипт работает без ошибок. Но на моем raspi продолжать получать эту ошибку:

UnicodeEncodeError: 'ascii' codec can't encode character '\xd6' in position 21: ordinal not in range(128) 

намеков ошибки в немецком характере (умляут, ö), которые должны быть напечатаны с использованием print(a_name)

Что меня смущает: При вызове python3 myscript.py Я не» t получить ошибки на raspi. Но с вызовом python3 myscript.py> output Я получаю сообщение об ошибке. То же самое с nohup python3 myscript.py или при запуске из кронтаба:

@reboot LANG=de_DE.UTF-8 /home/pi/launcher.sh > /home/pi/bot/logs/cronlog 2>&1 

где launcher.sh использует следующий код:

python3 myscript.py > pythonlog 2>&1 

я проверил $ LANG

на моем компьютере Ubuntu (где У меня нет ошибок): ru_US.UTF-8

на raspi: de_DE.UTF-8

Почему я получаю это сообщение об ошибке и как я могу избавиться от него?

ответ

3

Вы пробовали установить переменную окружения PYTHONIOENCODING?

export PYTHONIOENCODING=UTF-8 
python3 myscript.py > pythonlog 2>&1 
+0

Это было легче, чем я думал. Спасибо. – Sadik

2

В нормальных условиях Python использует локаль, чтобы определить, какую кодировку применять к стандарту.

Когда у Python нет интерактивного сеанса, т. Е. Когда вход или выход переадресован или перенаправлен, Python по умолчанию использует «ASCII» кодировку на stdout и stdin.

Чтобы переопределить это поведение, используйте переменную окружения PYTHONIOENCODING, чтобы установить подходящую кодировку ввода-вывода. Например.

PYTHONIOENCODING=utf-8 echo "test €3.20" | myscript.py > output.txt 
+0

, но при перенаправлении вывода на моем компьютере у меня не было проблем, хотя PYTHONIOENCODING там не установлен. – Sadik

+0

На вашем Rpi запустите 'locale' и посмотрите, есть ли какие-либо ошибки. –

+0

. Возможно, вы захотите обновить свой вопрос рядом друг с другом по сравнению с обоими машинами. На данный момент неясно, что работает, а что нет. –

Смежные вопросы