首先注意符号β(希腊语beta)在UTF-8:CE B2中有十六进制表示
我在Python 2.7中有使用json字符串的遗留源代码:
u'{"something":"text \\u00ce\\u00b2 text..."}'
然后它会打电话json.loads(字符串)或json.loads(字符串,'utf-8'),但结果是带有utf-8字符的Unicode字符串:
^{pr2}$我想要的是普通的pythonicode(UTF-16?)字符串:
u'text β text'
如果我打电话:
text = text.decode('unicode_escape')
以前json.loads,然后我得到了正确的Unicodeβ符号,但它也破坏了json,因为它还替换了所有新行-\n
问题是,如何只转换"\\u00ce\\00b2"
部分而不影响其他json特殊字符?在
(我是Python新手,它不是我的源代码,所以我不知道它应该如何工作。我怀疑代码只适用于ASCII字符)
下面是一个字符串修复程序,它在加载JSON之后工作。它处理任何长度的类似UTF-8的序列,并忽略看起来不像UTF-8序列的转义序列。在
示例:
输出:
^{pr2}$也许是这样吧。限制为2字节UTF-8字符。在
返回示例的
^{pr2}${"something":"text \u03b2 text..."}
。此时,您可以将其作为常规JSON导入并获得所需的最终字符串。在相关问题 更多 >
编程相关推荐