Не могу преобразовать ASCII в UTF-8 в Python - PullRequest
1 голос
/ 15 марта 2011

У меня есть польское слово "wąż", которое означает "змея"

, но я получаю его из веб-службы в ascii, поэтому:

snake_in_polish_in_ascii="w\xc4\x85\xc5\xbc"

Есть результаты моих попыток:

print str(snake_in_polish_in_ascii) #this prints me w─ů┼╝

snake_in_polish_in_ascii.decode('utf-8')
print str(snake_in_polish_in_ascii) #this prints me w─ů┼╝ too

и этот код:

print  str(snake_in_polish_in_ascii.encode('utf-8'))

вызывает исключение:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 1: ordinal not in range(128)

Я использую Wing Ide, в Windows Xp с польской культурой.

Вверху файла у меня есть:

# -*- coding: utf-8 -*-

Я не могу найти способ решить это.Почему я не могу получить "wąż" на выходе?

Ответы [ 4 ]

8 голосов
/ 15 марта 2011

Это выражение:

snake_in_polish_in_ascii.decode('utf-8')

не меняйте строку на месте, попробуйте так:

print snake_in_polish_in_ascii.decode('utf-8')

О причине того, почему когда вы делаете print snake_in_polish_in_ascii, вы видите w─ů┼╝, потому что ваш терминал использует кодировку cp852 (Центральная и Восточная Европа), попробуйте вот так:

>>> print snake_in_polish_in_ascii.decode("cp852")
w─ů┼╝
5 голосов
/ 15 марта 2011
>>> i="w\xc4\x85\xc5\xbc"
>>> print i.decode('utf-8')
wąż
0 голосов
/ 22 сентября 2018

по умолчанию исходные файлы python обрабатываются как закодированные в UTF8, несмотря на то, что стандартная библиотека python использует только ASCII

0 голосов
/ 26 июля 2017

Пример:

snake_in_polish_in_ascii = 'w\xc4\x85\xc5\xbc'
print snake_in_polish_in_ascii.decode('cp1252').encode('utf-8')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...