当使用Python调用Quickbase API时,我在编码方面遇到了问题。我调用API来获取记录,并将请求中的编码参数指定为"UTF-8"。我从Quickbase得到的XML响应说它是UTF-8,因为XML以开头
<?xml version="1.0" encoding="utf-8" ?>
然而,XML字节实际上是,编码为CP1252。我确认了这一点,因为右单引号(Unicode字符U+2019)被编码为字节0x92(CP1252),而不是UTF-8字节序列0xE2 0x80 0x99。你知道为什么Quickbase说XML响应是一种编码(UTF-8),但实际上使用了另一种(CP1252)吗?
请注意,我还在请求中传递了一个"Accept-Charset:utf-8"标头,但这没有任何效果。
知道Quickbase为什么说XML响应是一种编码吗(UTF-8),但实际使用另一个(CP1252)?
可能是因为Quickbase开发人员在没有真正理解encoding
的含义的情况下复制并粘贴了XML声明。
最简单的解决方法是使用xml_response = xml_response.decode('windows-1252').encode('UTF-8')
获得一个真实UTF-8字符串,以传递给XML解析器。