像字符串一样的Unicode问题

时间:2014-04-15 14:40:03

标签: python ios django unicode

我使用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}"

2 个答案:

答案 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')
ФффЭ