Установка правильной кодировки при передаче stdout в Python

| | | | |

При передаче по конвейеру вывода программы Python интерпретатор Python путается в кодировке и устанавливает для нее значение None. Это означает такую программу:

# -*- coding: utf-8 --*- print u"åäö" 

будет работать нормально при нормальном запуске, но с ошибкой:

UnicodeEncodeError: кодек "ascii" не может кодировать символ u"xa0" в позиции 0: порядковый номер не в диапазоне (128)

при использовании в конвейерной последовательности.

Каков наилучший способ заставить это работать при конвейерной передаче? Могу ли я просто сказать, чтобы использовалась любая кодировка оболочки/файловой системы/независимо от того, что с помощью?

Предложения, которые я видел до сих пор, заключаются в том, чтобы изменить ваш site.py напрямую или жестко запрограммировать кодировку по умолчанию, используя этот хак:

# -*- coding: utf -8 --*- import sys reload(sys) sys.setdefaultencoding("utf-8") print u"åäö" 

Есть ли лучший способ сделать конвейер работать?

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method