Podczas przesyłania potokowego danych wyjściowych programu w języku Python interpreter języka Python ma problem z zakodowaniem i ustawia go na Brak. Oznacza to taki program:
# -*- coding: utf-8 -*-
print u"åäö"
będzie działał dobrze, gdy będzie działał normalnie, ale zawiedzie z:
UnicodeEncodeError: Kodek „ascii” nie może zakodować znaku u '\ xa0' w pozycji 0: porządek poza zakresem (128)
gdy jest używany w sekwencji rur.
Jaki jest najlepszy sposób, aby to zadziałało podczas instalacji rurowej? Czy mogę po prostu powiedzieć mu, aby używało dowolnego kodowania powłoki / systemu plików / czegokolwiek używa?
Sugerowane do tej pory sugestie to bezpośrednia modyfikacja pliku site.py lub zakodowanie domyślnego kodowania za pomocą tego hacka:
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print u"åäö"
Czy istnieje lepszy sposób na wykonanie instalacji rurowej?
chcp 65001
przed uruchomieniem skryptu. Może to powodować problemy, ale często pomaga i nie wymaga dużo pisania (mniej niż set PYTHONIOENCODING=utf_8
).
setx PYTHONENCODING utf-8
się, aby było trwałe, jeśli chcesz oszczędzać na pisaniu.