3

我想用 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 编码的字符串,它看起来像"\u00C2\u00A9"有效的 JSON。

TL;DR 我怎样才能'©'变成"\u00C2\u00A9"Python?我觉得我遗漏了一些明显的东西——有没有内置的方法可以做到这一点?

4

1 回答 1

2

如果您真的想要"\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"输出,但我不确定如何生成它。

于 2013-06-19T19:43:01.217 回答