Използвам Win10 & Scite с изходен прозорец с активиран utf-8. Файлът се записва като UTF-8 с BOM
Скрипт:
print('ダイスキ from python 3')
Скриптът може да се изпълнява на cmd prompt
без грешка. Но когато се стартира на Scite
, ще се получи грешка:
Изход:
>pythonw.exe -u "test.py"
Traceback (most recent call last):
File "test.py", line 12, in <module>
print('\u30c0\u30a4\u30b9\u30ad from python 3')
File "D:\BIN\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 characters in position 1-2: character maps to <undefined>
>Exit code: 1
Как правилно да отпечатате ダイスキ в stdout с помощта на python3 със Scite?
Актуализации:
Редактирах файла на Scite Global Options, за да поддържа utf-8.
code.page=65001
Тествах C, Lua, стария Python 2.7 и той може да отпечатва utf-8 низове (в прозореца за извеждане на Scite).
Изглежда, че това е грешка в конфигурацията на Scite или може би грешка в Scite, тъй като прозорецът на изходния терминал на Scite работи на Lua & C, но не успява само на Python3.
encode
иdecode
? Какво ще кажете за обикновенprint('ダイスキ')
? - person deceze♦   schedule 14.12.2018cmd prompt
, но със странен текст и без грешка. Но ако работи наScite
, ще доведе до грешка. Това определено еScite
грешка. Работи наC & Lua
, но се проваля сPython3
. - person dns   schedule 14.12.2018encode
decode
танц? - person deceze♦   schedule 14.12.2018Traceback (most recent call last): File "test-requests.py", line 16, in <module> print("\u30c0\u30a4\u30b9\u30ad") File "D:\BIN\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 characters in position 0-3: character maps to <undefined>
- person dns   schedule 14.12.2018encode
decode
, защото вероятно няма нищо общо с проблема. Проблемът е, че UTF-8 изходът не работи във вашата конкретна среда, нека се съсредоточим върху тази среда. - person deceze♦   schedule 14.12.2018cp1252
. Сигурни ли сте, че конфигурирате SciTE правилно за UTF-8? - person Mark Tolonen   schedule 14.12.2018code.page=65001
, но все още получавам същото съобщение за грешка. Мога да отпечатам други уникод знаци освен японски/китайски. - person dns   schedule 15.12.2018encodings\cp1252.py
, така че смята, че това е кодирането на stdout. - person Mark Tolonen   schedule 15.12.2018output.code.page
. Това зададено и отменя лиcode.page
? - person Mark Tolonen   schedule 15.12.2018output.code.page
, но пак връщам същата грешка. Току-що инсталирах стария Python 2.7 и той работи добре със Scite & Unicode. Само Python 3.7 (C/J/K/арабски символ) не работи със Scite. Много е странно. - person dns   schedule 15.12.2018