我有波兰语“wąż”,意思是“蛇”
但我是从ascii的webservice获得的,所以:
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ąż”?
答案 0 :(得分:8)
这个表达式:
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─ů┼╝
答案 1 :(得分:5)
>>> i="w\xc4\x85\xc5\xbc"
>>> print i.decode('utf-8')
wąż
答案 2 :(得分:0)
示例:
snake_in_polish_in_ascii = 'w\xc4\x85\xc5\xbc'
print snake_in_polish_in_ascii.decode('cp1252').encode('utf-8')
答案 3 :(得分:0)
默认情况下,尽管python标准库仅使用ASCII,但python源文件仍被视为以UTF8编码