我使用django框架为iOS客户端编写API,并且像字符串一样遇到Unicode问题。客户端向我发送字符串,其中包含:\U0424\U0444\U0444\U042d
。
我无法弄清楚如何解析它?编码是什么?这是俄罗斯文字。
原来我明白这个:
{\n value = \\\"\\U0424\\U0444\\U0444\\U042d\\\";\n data1 = \"{\\n x = \\\"75.5\\\";\\n y = \\\"206.75\\\";\\n}\";\n data2 = 12;\n data4 = 1395911055;\n data5 = \\\"value\\\";\n}"
答案 0 :(得分:2)
您收到的数据是(几乎)JSON格式。使用json.loads
来解析这些事情:
>>> json.loads('"\u0424\u0444\u0444\u042d"') # Valid JSON.
'ФффЭ'
答案 1 :(得分:1)
你没有JSON数据,你有一个专有的Apple格式,它出现了。
如果您已经成功解析数据,除了包含这些引用的字符串数据,我不会将其解析为JSON,而是解析为具有unicode转义的Python字符串。你必须按一下文字才能兼容:
import re
escaped = re.sub(r'\\U([a-zA-Z0-9]{4})', r'\\u\1', inputstring)
result = escaped.decode('unicode_escape')
演示:
>>> import re
>>> inputstring = '\U0424\U0444\U0444\U042d'
>>> escaped = re.sub(r'\\U([a-zA-Z0-9]{4})', r'\\u\1', inputstring)
>>> escaped
'\\u0424\\u0444\\u0444\\u042d'
>>> escaped.decode('unicode_escape')
u'\u0424\u0444\u0444\u042d'
>>> print escaped.decode('unicode_escape')
ФффЭ