Під час передачі даних на програму Python інтерпретатор Python плутається з приводу кодування та встановлює його на None. Це означає таку програму:
# -*- coding: utf-8 -*-
print u"åäö"
буде працювати нормально при нормальному виконанні, але не вдасться:
UnicodeEncodeError: кодек "ascii" не може кодувати символ u '\ xa0' у позиції 0: порядковий не знаходиться в діапазоні (128)
при використанні в послідовності труб.
Який найкращий спосіб зробити цю роботу при трубопроводах? Чи можу я просто сказати йому використовувати будь-яке кодування оболонки / файлової системи / що б там не було?
Поки що я бачив пропозиції - це змінити ваш сайт.py безпосередньо або жорстке кодування дефолтного кодування за допомогою цього злому:
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print u"åäö"
Чи є кращий спосіб змусити трубопроводи працювати?
chcp 65001
перед виконанням сценарію. Це може мати проблеми, але це часто допомагає і не потребує великого набору тексту (менше, ніж set PYTHONIOENCODING=utf_8
).
setx PYTHONENCODING utf-8
зробити його постійним, якщо хочете зберегти набравши текст.