Измените кодировку Python 3.7 по умолчанию с cp1252 на cp65001 или UTF-8 - PullRequest
1 голос
/ 11 июля 2019

Мне нужно изменить кодировку Python с cp1252 на UTF-8. Использование python 3.7.1, пакета сценариев Atom и Atom для терминала.

Я прочитал о https://www.python.org/dev/peps/pep-0540/ (решение этой проблемы? Я не знаю, как реализовать или, если полезно), я не могу найти разрешение звука.

В настоящее время он не может обрабатывать '\ u2705' или другие. При проверке каталога файлов Python я нашел ... Python \ Python37 \ lib \ encodings \ cp1252.py

#When I run 
import locale
import sys
print(sys.getdefaultencoding())
print(locale.getpreferredencoding())

#I get 
utf-8
cp1252
[Finished in 0.385s]

#Error for print('\u2705')
Traceback (most recent call last):
File "C:\Users\en4ijjp\Desktop\junk.py", line 7, in <module>
print('\u2705').decode('utf-8')
File "C:\Users\en4ijjp\AppData\Local\Programs\Python\Python37\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2705' in 
position 0: character maps to <undefined>
[Finished in 0.379s]

Я ожидаю, что мой терминал будет обрабатывать символы и отображать их при использовании print ()

1 Ответ

0 голосов
/ 17 июля 2019

Это решается, если поместить следующий текст в верхнюю часть скрипта Python. Я могу напечатать все символы без ошибок.

import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
...