Mam skrypt Python, który zapisuje niektóre ciągi z kodowaniem UTF-8. W moim skrypcie używam głównie funkcji str()
do rzutowania na ciąg. Wygląda to tak:Opis Python Unicode i Linux terminal
mystring="this is unicode string:"+japanesevalues[1]
#japanesevalues is a list of unicode values, I am sure it is unicode
print mystring
Nie używam terminala Python, tylko standardowy terminal Linux Red Hat x86_64. Ustawiłem terminal na wyjście z utf8 chars.
Jeśli mogę wykonać to:
#python myscript.py
this is unicode string: カラダーズ ソフィー
Ale jeśli to zrobić:
#python myscript.py > output
mam typowy błąd:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 253-254: ordinal not in range(128)
Dlaczego tak jest?
W swoim pytaniu powiedziałeś, że "niektóre ciągi z kodowaniem UTF-8", w jaki sposób możesz upewnić się, że ciągi zostały zakodowane przy użyciu UTF-8, co zrobiłeś? –
@ venus.w Przepraszam, nie mogę ci wiele pomóc. Czytam ciągi z DB i CSV zakodowane w UTF-8, ale po prostu zakładam, że kodowanie jest rzeczywiście UTF-8 (ponieważ jeśli wydrukuję mogę poprawnie odczytać znaki japońskie), ale mogą one być faktycznie zakodowane w innym zestawie znaków, który pozwala także na japońskie znaki. Wierzę, że istnieją funkcje Pythona, które mogą powiedzieć kodowanie ciąg, a nawet go zmienić. – Cesc