上下文 我正在使用谷歌的App Engine(在Python中)连接维基百科的API。 然后我得到一个用于在网页上显示的json文件。 它工作正常,但我遇到了突出/非拉丁字符的问题。
实际问题:
当我查询“Nikola Tesla”时,他在西里尔语中的名字是python源代码,而不是utf-8:
\u041d\u0438\u043a\u043e\u043b\u0430 \u0422\u0435\u0441\u043b\u0430
。
因此,python源代码无法正确读取,并且他在网页上的名称显示为\u041d\u0438\u043a\u043e\u043b\u0430 \u0422\u0435\u0441\u043b\u0430
而不是НиколаТесла。
如何将此python源代码转换为有效的utf-8:\xD0\x9D\xD0\xB8\xD\xBA\xD0\xBE\xD0\xBB\xD0\xB0
除了我煞费苦心地搜索个别角色,就是......
谢谢
答案 0 :(得分:0)
u"\u041d"
(带u
前缀)和"\u041d"
(没有u
前缀)之间存在差异 - 首先将Python视为具有unicode字母{{的unicode字符串1}},第二个被视为非unicode字符串,因此Python不会将\u041d
识别为unicode字母。
如果您的文字没有前缀(并且您无法手动添加前缀),那么您必须使用\u041d
将其转换为正确的unicode字符串
decode('unicode-escape')
如果你有正确的unicode字符串,那么你可以将其转换为“UTF-8”
"\u041d".decode('unicode-escape')
u"\u041d"
-
我在示例中使用字符串,但您可以使用带字符串的变量。
u"\u041d".encode('utf-8')
'\xd0\x9d'