Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python 3.2.3 xml.etree.cElementTree unicode字符工作不正常_Python_Xml_Urllib_Elementtree - Fatal编程技术网

python 3.2.3 xml.etree.cElementTree unicode字符工作不正常

python 3.2.3 xml.etree.cElementTree unicode字符工作不正常,python,xml,urllib,elementtree,Python,Xml,Urllib,Elementtree,我偶然发现了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> <tag

我偶然发现了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>
一切都很顺利,直到我在《西班牙人》中得到了一个特殊的角色,比如“尼娜”。我没有正确打印这些字符,而是在HTML代码中得到以下内容:

<b>tags</b>: English,Español <br/>
标签:英语,Español
我是如何从‘ñ’变成‘ñ’的


我在这里遗漏了什么吗?

您看到UTF-8数据被解释为拉丁语1:

>>> '\u00f1'.encode('utf8').decode('latin1')
ñ
其中,
\u00f1
是带有波浪号的拉丁文小写n的unicode码点:ñ

您的终端可能配置为Latin-1显示;尝试从UTF-8解码:

print(str(tag, 'utf8'))

您将看到UTF-8数据被解释为拉丁语1:

>>> '\u00f1'.encode('utf8').decode('latin1')
ñ
其中,
\u00f1
是带有波浪号的拉丁文小写n的unicode码点:ñ

您的终端可能配置为Latin-1显示;尝试从UTF-8解码:

print(str(tag, 'utf8'))

暂停你的编码,读这篇文章:-然后回来检查答案使用你的编码,读这篇文章:-然后回来检查答案是,我一直在这条道路上。我得到了以下“Españ;奥尔'。我试图用escapeXML来消除这种情况,但仍然没有将其更改回原始状态。我执行了以下命令:>>>>打印(sys.stdout.encoding)UTF-8>>>打印(sys.getdefaultencoding())UTF-8,所以看起来一切都在UTF-8上。原始XML文档是否包含该实体(
ñ;
)?这是一个HTML实体,不是XML转义(对于基本XML,只有尖括号和符号需要转义)。如果没有,您能用您目前的代码尝试更新您的问题吗?不,它不包含“ñ;”据我所知。它总是表现出正确的性格。我已经尝试了很多东西,但我会尝试在我的原始帖子中添加最相关的东西。是的,我一直在走这条路。我得到了以下“Españ;奥尔'。我试图用escapeXML来消除这种情况,但仍然没有将其更改回原始状态。我执行了以下命令:>>>>打印(sys.stdout.encoding)UTF-8>>>打印(sys.getdefaultencoding())UTF-8,所以看起来一切都在UTF-8上。原始XML文档是否包含该实体(
ñ;
)?这是一个HTML实体,不是XML转义(对于基本XML,只有尖括号和符号需要转义)。如果没有,您能用您目前的代码尝试更新您的问题吗?不,它不包含“ñ;”据我所知。它总是表现出正确的性格。我已经尝试了很多东西,但我会尝试在我原来的帖子中添加最相关的东西。