我有波兰语单词“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)
我在具有波兰文化的 Windows Xp 上使用 Wing Ide。
在文件顶部我有:
# -*- coding: utf-8 -*-
我找不到解决它的方法。为什么我无法在输出中得到“wąż”?
请您参考如下方法:
这个表达式:
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─ů┼╝
