用Unicode(UTF8)表示非英语字符

2024-05-16 01:49:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python中的HTML字符串,其中包含非英语字符,该字符串由16位unicode十六进制值表示。字符串显示:

"Skr\u00E4ddarev\u00E4gen"

正确转换后的字符串应为“Skräddarevägen”。如何确保unicode十六进制值在输出时得到正确的编码/解码,并以正确的重音进行读取?在

(注意,我使用的是Requests和Pandas,两者的编码都设置为utf-8) 提前谢谢!在


Tags: 字符串pandas编码htmlunicode解码字符requests
3条回答

从您的显示中,很难确定字符串中是什么。假设是显示的24个字符,我相信下面的最后一行回答了您的问题。在

s = "Skr\\u00E4ddarev\\u00E4gen"
print(len(s))
for c in s: print(c, end=' ')
print()
print(eval("'"+s+"'"))
print(eval("'"+s+"'").encode('utf-8'))

这个指纹

^{pr2}$

在Python 3中,可能会发生以下情况:

  1. 如果你从HTML文件中提取字符串,你必须读入 使用正确编码的HTML文件。在
  2. 如果您有python3代码中的字符串,那么它在内存中应该已经是Unicode(32位)。在

将字符串写入一个文件,您必须在打开的文件中指定所需的编码。在

如果您使用的是python3,而这正是字符串的内容,那么它“只起作用”:

>>> s = "Skr\u00E4ddarev\u00E4gen"
>>> s
'Skräddarevägen'

如果你把这个字符串作为原始数据,你必须对它进行解码。如果是Unicode字符串,则必须先将其编码为字节。最终结果将是Unicode。如果已经编码了一个字节,则跳过一步。在

^{pr2}$

如果你需要正确解码的话,你会看到:

>>> s = "Skr\u00E4ddarev\u00E4gen"
>>> s
'Skr\\u00E4ddarev\\u00E4gen'
>>> s.decode('unicode_escape')
u'Skr\xe4ddarev\xe4gen'
>>> print s.decode('unicode_escape')
Skräddarevägen

相关问题 更多 >