0

Pythonを使用してQuickbaseAPIを呼び出すときに、エンコーディングに問題があります。APIを呼び出してレコードを取得し、リクエストでエンコーディングパラメータを「UTF-8」として指定します。Quickbaseから返されるXML応答は、XMLが次のように始まるため、UTF-8であると示しています。

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

ただし、XMLバイトは実際にはCP1252としてエンコードされています。右一重引用符(Unicode char U + 2019)がUTF-8バイトシーケンス0xE2 0x80 0x99ではなくバイト0x92(CP1252)としてエンコードされているため、これを確認しました。QuickbaseがXML応答を1つのエンコーディング(UTF-8)であると言っているのに、実際には別のエンコーディング(CP1252)を使用している理由はありますか?

リクエストで「Accept-Charset:utf-8」ヘッダーも渡していますが、効果がないことに注意してください。

4

1 に答える 1

2

QuickbaseがXML応答を1つのエンコーディング(UTF-8)であると言っているのに、実際には別のエンコーディング(CP1252)を使用している理由はありますか?

おそらく、Quickbase開発者が、実際にencoding意味を理解せずにXML宣言をコピーして貼り付けたためです。

最も簡単な回避策は、XMLパーサーに渡す実際のxml_response = xml_response.decode('windows-1252').encode('UTF-8')UTF-8文字列を取得するために使用することです。

于 2012-04-02T17:00:43.000 に答える