Я получил данные о байтах, включая символ японской йены (¥). Это, по-видимому, выражается как \xc2\xa5
.Как декодировать символ японской йены в Python?
Однако я не могу декодировать символ иены. Например,
yen = b"\xc2\xa5"
type(yen) # return bytes
yen.decode("utf-8") # return UnicodeEncodeError: 'ascii' codec can't encode character '\xa5' error
import chardet
chardet.detect(yen) # return {'confidence': 0.73, 'encoding': 'windows-1252'}
yen.decode("windows-1252") # return another UnicodeEncodeError: 'ascii' codec can't encode characters error
Данные байт У меня может быть расшифрован, как utf-8
в других аспектах. Только символ японской йены не может быть расшифрован, независимо от того, какую кодировку вы используете.
Так как я могу его декодировать?
Я не могу воспроизвести вашу проблему. 'b" \ xc2 \ xa5 "' является кодировкой UTF-8 '¥'. 'yen.decode (" utf-8 ")' дает '¥' (или 'u '\ xa5'') как для Python2, так и для Python3 для меня, как на Debian, так и на OSX. Что такое 'sys.stdout.encoding'? Похоже, что это может быть ошибка вывода, а не сама манипуляция с строкой. – Amadan
@ Амадан О, правда? Я дважды проверил его, но все же получил ту же ошибку. Я использую Python 3.5 (интерактивная оболочка IPython) для macOS. – Blaszard
'YEN = yen.decode ('utf-8')' отлично работает для меня. – ABcDexter