【问题标题】:Quickbase API returns data in CP1252 encoding but says it's returning UTF-8Quickbase API 以 CP1252 编码返回数据,但表示它正在返回 UTF-8
【发布时间】:2012-04-16 08:11:47
【问题描述】:

我在使用 Python 调用 Quickbase API 时遇到了编码问题。我调用 API 来获取记录,并将请求中的 encoding parameter 指定为“UTF-8”。我从 Quickbase 得到的 XML 响应说它是 UTF-8,因为 XML 以:

<?xml version="1.0" encoding="utf-8" ?>

然而,XML 字节实际上被编码为 CP1252。我已经确认了这一点,因为右单引号 (Unicode char U+2019) 被编码为字节 0x92 (CP1252) 而不是 UTF-8 字节序列 0xE2 0x80 0x99。知道为什么 Quickbase 说 XML 响应是一种编码 (UTF-8) 但实际上使用的是另一种 (CP1252)?

请注意,我还在请求中传递了“Accept-Charset: utf-8”标头,但这没有任何效果。

【问题讨论】:

  • 你考虑过对 Intuit 大喊大叫吗?
  • 是的,好主意,谢谢。一开始找不到他们的支持表格,但现在给他们发了电子邮件。
  • 他们的 CS 代表回复我说:“我已为您进一步调查,发现此时最好的办法是通过我们的用户语音功能搜索看看是否有其他人要求增强对 UTF8 编码的支持。如果是,我建议你投票。所以请对quickbase.uservoice.com/forums/… 投票——与此同时,我将使用 dan04 的解决方案来解决它。
  • “增强”?不推荐列表的另一个名称。

标签: python xml api encoding quickbase


【解决方案1】:

知道为什么 Quickbase 说 XML 响应是一种编码 (UTF-8) 但实际上使用的是另一个 (CP1252)?

可能是因为 Quickbase 开发人员在没有真正理解 encoding 的含义的情况下复制并粘贴了 XML 声明。

最简单的解决方法是使用xml_response = xml_response.decode('windows-1252').encode('UTF-8') 获取一个真实 UTF-8 字符串以传递给XML 解析器。

【讨论】:

    猜你喜欢
    • 2021-06-14
    • 2012-07-18
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多