![](/img/trans.png)
[英].CSV wrong characters: Changing encoding to UTF-8 pandas / python
[英]Python gets the wrong encoding for UTF-8 characters?
我正在尝试从网站获取带有特殊字符的文本,因此Python返回的字符串充满了“ \\ x”字符。 但是,似乎编码是错误的。 例如,在获取时:
th =urllib2.urlopen('http://norse.ulver.com/dct/zoega/th.html')
网页<h1>
级别的行应包含字母“Þ”,根据http://www.fileformat.info/info/charset/UTF-8/list.htm ,其字节数为C39E和Unicode代码DE
相反,我得到
'<h1>\xc3\x9e</h1>'
字节数一分为二,以便将行写入文件然后以Unicode编码打开时,得到的是“Þ”而不是“Þ”。
如何强制Python将\쎞
或\\xde
等字符编码为\\xc3\\x9e
?
这是U + 00DE的正确UTF-8 字节编码,需要两个字节来表示( \\xc3
和\\x9e
),但是您需要将其解码为Unicode才能看到Unicode代码点:
>>> '<h1>\xc3\x9e</h1>'.decode('utf8')
u'<h1>\xde</h1>'
上面是一个Unicode字符串,显示了正确的Unicode代码点。 在UTF-8控制台上进行打印:
>>> print '<h1>\xc3\x9e</h1>'.decode('utf8')
<h1>Þ</h1>
如果您使用错误的编码来解码,则会得到不同的Unicode代码点。 在这种情况下,U + 00C3和U + 017E。 \\xc3
是Unicode字符串<U + 0100的Unicode字符串中的转义代码 ,而\ž
是<U + 10000的代码点的一个:
>>> '<h1>\xc3\x9e</h1>'.decode('cp1252')
u'<h1>\xc3\u017e</h1>'
>>> print '<h1>\xc3\x9e</h1>'.decode('cp1252')
<h1>Þ</h1>
推荐阅读:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.