我有一个字符串存储在数据库中为:

FB (\u30a8\u30a2\u30eb\u30fc)


当我从python代码加载此行时,无法正确设置其格式。

# x = load that string
print x # returns u'FB (\\u30a8\\u30a2\\u30eb\\u30fc)'


请注意,两个“ \”会弄乱前端的Unicode字符
html不会显示外来字符,而是显示为\ u30a8 \ u30a2 \ u30eb \ u30fc

但是,如果我加载附加一些字符以将其转换为json格式并加载json,则会得到预期的结果。

s = '{"a": "%s"}'%x
json.loads(s)['a']
#prints u'FB (\u30a8\u30a2\u30eb\u30fc)'


请注意,此结果(在前端正确显示)与直接打印x(具有extra)之间是有区别的。
因此,尽管这种骇人听闻的解决方案有效,但我想要一个更干净的解决方案。
我在x.encode('utf-8')等游戏中玩了很多,但是都没有用。

谢谢!

最佳答案

由于您已经有了Unicode字符串,因此将其编码回ASCII并使用unicode_escape编解码器进行解码:

>>> s = u'FB (\\u30a8\\u30a2\\u30eb\\u30fc)'
>>> s
u'FB (\\u30a8\\u30a2\\u30eb\\u30fc)'
>>> print s
FB (\u30a8\u30a2\u30eb\u30fc)
>>> s.encode('ascii').decode('unicode_escape')
u'FB (\u30a8\u30a2\u30eb\u30fc)'
>>> print s.encode('ascii').decode('unicode_escape')
FB (エアルー)

关于python - python中的Unicode-Ascii混合字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38602376/

10-10 18:28
查看更多