我想用 UTF-8 编码一个字符串并单独查看相应的 UTF-8 字节。在 Python REPL 中,以下内容似乎工作正常:
>>> unicode('©', 'utf-8').encode('utf-8')
'\xc2\xa9'
请注意,我使用的是 U+00A9 COPYRIGHT SIGN作为这里的例子。 '\xC2\xA9'
看起来很接近我想要的 — 一个由两个独立代码点组成的字符串:U+00C2 和 U+00A9。 (当 UTF-8 解码时,它返回原始字符串,'\xA9'
。)
然后,我希望将 UTF-8 编码的字符串转换为 JSON 兼容的字符串。但是,以下内容似乎并没有满足我的要求:
>>> import json; json.dumps('\xc2\xa9')
'"\\u00a9"'
请注意,它会生成一个包含 U+00A9(原始符号)的字符串。相反,我需要 UTF-8 编码的字符串,它在有效的 JSON 中看起来像 "\u00C2\u00A9"
。
TL;DR 如何在 Python 中将 '©'
转换为 "\u00C2\u00A9"
?我觉得我错过了一些明显的东西——没有内置的方法来做到这一点吗?
最佳答案
如果你真的想要 "\u00c2\u00a9"
作为输出,给 json
一个 Unicode 字符串作为输入。
>>> print json.dumps(u'\xc2\xa9')
"\u00c2\u00a9"
您可以从原始字节生成这个 Unicode 字符串:
s = unicode('©', 'utf-8').encode('utf-8')
s2 = u''.join(unichr(ord(c)) for c in s)
我认为您真正想要的是 "\xc2\xa9"
作为输出,但我不确定如何生成它。
关于python - 将 Unicode 字符串转换为 UTF-8,然后再转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17199653/