我偶然发现了python的这个特殊问题,我无法解释为什么会发生这种情况。假设我有一个来自服务器的xml片段:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!--Get the Object if known to the system-->
<object>
<ID>1</ID>
<name>object1</name>
<tags type="languages">English,Español</tags>
</object>
我使用以下代码从服务器获取它:
temp = urllib.request.urlopen("http://someurl.com")
tree = elementTree.parse(temp)
node = tree.getroot()
一切正常,直到我在'Español'中得到像'ñ'这样的特殊角色。我没有正确打印这些字符,而是在我的HTML代码中获得以下内容:
<b>tags</b>: English,Español <br/>
我是如何从'ñ'到'ñ'的?
我在这里错过了什么吗?
答案 0 :(得分:3)
您看到UTF-8数据被解释为Latin 1:
>>> '\u00f1'.encode('utf8').decode('latin1')
ñ
其中\u00f1
是拉丁语后面的n的unicode代码点,带有代字号:ñ。
您的终端可能配置为Latin-1显示;尝试从UTF-8解码:
print(str(tag, 'utf8'))