我对奇怪的转义unicode字符串有一些问题。我的脚本通过请求库和响应.text包含以下unicode字符串:
u'\\u003c? abc ?\\u003eDas Modell des Adaptiven Zyklus wurde aus vergleichenden Untersuchungen zur Dynamik von \xd6kosystemen abgeleitet.\\u003c? /abc ?\\u003e'
**Updated** Martijn solution works with the upper one, but breaks with this one because of len="12"
u'\\u003c?abc len="12"?\\u003eResilienz sollte als st\xe4ndiger Anpassungsprozess zwischen Systemen und der Umwelt begriffen werden.\\u003c? /abc ?\\u003e'
服务器的响应如下所示:
^{pr2}$问题是像\u003c这样的双转义unicode序列,\u003c通常表示一个<;字符。\xd6是正确的,代表一个德国人。这个双转义完全弄乱了我的unicode字符串:-)
我在这篇文章中发现了类似的问题: Stack Overflow - Conversion of strings like \uXXXX in python
解决方案,使用字符串.解码('unicode-escape'),只有当所有unicode序列都将被转义,而不是使用单转义和双转义的混合转义时,它才有效。只需将双转义替换为单转义,就会得到一个损坏的unicode字符串。在
最简单最好的解决方案是在服务器端调整响应编码,但是我没有权限。。。在
谢谢你的帮助!!!在
我怀疑服务器正在返回JSON字符串。JSON使用相同的转义序列,如果在字符串中添加引号,
json.loads()
很乐意为您解码该示例:尝试使用
json.loads('"{0}"'.format(response.content))
解码对Unicode的响应。在您的更新版本确实包含引号,这有点麻烦,因为要在有效的JSON中使用,这些引号必须被转义。那么它可能不是JSON,而是其他形式的转义;Java和Ruby也使用
^{pr2}$\uxxxx
转义符。下一步我们可以尝试使用正则表达式来替换:此正则表达式将解码任何与它的unicode字符等价的
\uxxxx
,前提是它前面没有\
,它有效地转义;\\uxxxx
不会被替换。在正则表达式方法解码两个示例(第二个先解码):
相关问题 更多 >
编程相关推荐