【发布时间】:2012-12-18 04:39:12
【问题描述】:
我对奇怪的转义 unicode 字符串有一些问题。我的脚本通过请求库使用 Web 服务,并且 response.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'
来自服务器的响应如下所示:
\u003c? abc ?\u003eDas Modell des Adaptiven Zyklus wurde aus vergleichenden Untersuchungen zur Dynamik von Ökosystemen abgeleitet.\u003c?dpf /sent ?\u003e
问题是双重转义的 unicode 序列,如 \u003c,\u003c 通常表示
我在这篇文章中发现了类似的问题: Stack Overflow - Conversion of strings like \uXXXX in python
使用 string.decode('unicode-escape') 的解决方案似乎只有在所有 unicode 序列都被转义但不能混合单双转义的情况下才有效。只需用单个转义符替换双重转义符就会给我一个损坏的 unicode 字符串。
最简单和最好的解决方案是调整服务器端的响应编码,但我无权访问...
感谢您的帮助!!!
【问题讨论】:
-
出于好奇,这些响应的内容类型标头是什么?
-
内容类型:文本/纯文本; charset=UTF-8
-
@Martijn Pieters 我尝试了firebug控制台中的字符串,输出似乎是正确的:
var a = '\u003c? abc len="12" ?\u003eDas Modell des Adaptiven Zyklus wurde aus vergleichenden Untersuchungen zur Dynamik von Ökosystemen abgeleitet.\u003c?dpf /sent ?\u003e'; console.log(a);Strange things... -
您的第二个示例包含额外的引号,使其作为文字 JSON 值无效。请参阅我的更新答案。