1

我现在正在开发一个小工具来请求和解码一个网页,在该网页上,汉字被存储为字符串,如

\u5c0f\u738b\u5b50\u003a\u6c49\u6cd5\u82f1\u5bf9\u7167 

在源代码中,一些 unicode。我想把它转换成汉字。

我可以通过这个网站http://rishida.net/tools/conversion/。但是我怎样才能使用 python 来实现呢?

4

1 回答 1

7

这些已经是 Unicode 代码点。它们代表中文字符,但使用开发人员更容易的转义码:

>>> print u'\u5c0f\u738b\u5b50\u003a\u6c49\u6cd5\u82f1\u5bf9\u7167'
小王子:汉法英对照

您不必做任何事情来转换它们;\uxxxx转义形式只是表达相同代码点的另一种方式。请参阅字符串文字

\uxxxx
具有 16 位十六进制值 xxxx 的字符(仅限 Unicode)
\Uxxxxxxxx
具有 32 位十六进制值 xxxxxxxx 的字符(仅限 Unicode)

Python 在读取源代码以构造 unicode 值时会解释这些转义码。

如果数据源不是来自 Python 源代码而是来自网络,那么您将使用 JSON 数据,它使用相同的转义格式:

>>> import json
>>> print json.loads('"\u5c0f\u738b\u5b50\u003a\u6c49\u6cd5\u82f1\u5bf9\u7167"')
小王子:汉法英对照

请注意,该值需要成为较大字符串的一部分,该字符串至少包含引号以将其标记为字符串。

另请注意,当涉及到非 BMP(补充)代码点时,JSON 字符串转义格式与 Python 的不同;JSON 像 UTF-16 一样对待那些,通过创建代理对并为这样的代码点使用两个\uxxxx序列。在 Python 中,您将使用\Uhhhhhhhh32 位十六进制值。

于 2013-04-17T10:57:07.847 回答