Ответ 1
okey я нашел свое решение и работает как шарм
import sys
sys.stdout.buffer.write(TestText2)
UPDATE: эта проблема для среды ZSH script, я использую bash и все находит.
некоторый фрагмент кода, подобный этому:
city_name = obj['city_from']['name'].encode('utf-8')
print(city_name)
Выход из этого кода:
b'\xd8\xa8\xd9\x86\xd8\xaf\xd8\xb1\xd8\xb9\xd8\xa8\xd8\xa7\xd8\xb3'
и если я удаляю вывод encode ('utf-8'), измените его следующим образом:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-7: ordinal not in range(128)
этот выходной язык является персидским (например, арабским), мне интересно, почему класс string в python3 не имеет какого-либо метода декодирования? У вас есть какие-либо решения этой проблемы?
спасибо
okey я нашел свое решение и работает как шарм
import sys
sys.stdout.buffer.write(TestText2)
UPDATE: эта проблема для среды ZSH script, я использую bash и все находит.
Ваш ответ показывает, что ваш терминал принимает последовательности байтов utf-8.
Вам не нужно преобразовывать строку Unicode в байты перед их печатью. Python делает это за вас.
Изменить кодировку символов, используемую Python для ввода-вывода; установите переменную окружения PYTHONIOENCODING=utf-8
или измените настройки локали.
Похоже, что sys.stdout.encoding
есть ascii
в вашем случае.
$ python3 -c'import sys; print(sys.stdout.encoding)'
UTF-8
$ python3 -c'import sys; print(sys.stdout.encoding)' | cat
ascii
$ LC_CTYPE=C python3 -c'import sys; print(sys.stdout.encoding)'
ANSI_X3.4-1968
ANSI_X3.4-1968
является каноническим именем для ascii
.
$ PYTHONIOENCODING=uTf-8 python3 -c'import sys; print(sys.stdout.encoding)' | cat
uTf-8
$ LC_CTYPE=C.UTF-8 python3 -c'import sys; print(sys.stdout.encoding)'
UTF-8
Не кодируйте кодировку символов внутри своих скриптов. Распечатайте строки Unicode и настройте свою среду соответственно