python - 将 Unicode 字符串转换为 UTF-8,然后再转换为 JSON

标签 python json unicode utf-8 escaping

我想用 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/

相关文章:

python - 计算元音

c# - Application.streamingAssetsPath 和 WebGL 构建

java - 在 Java 中用 String 中的字符替换 Unicode 字符代码

python - 从字典数据中删除 Unicode

python-3.x - 按下 "Ctrl+C"时 python 回显服务器的 Unicode 错误

python - 找到具有 k 个唯一字母的最大可能子串。 (递归)

python - 凯拉斯图像数据生成器 : problem with data and label shape

python - SQLAlchemy 使用现有主键创建新对象

json - Rest API -> 传递 json 字符串作为参数值

javascript - 从 json 构建 HTML 的最佳方法