Quickbase API 以 CP1252 编码返回数据,但表示它返回 UTF-8



当使用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解析器。

最新更新