2012-04-02 10 views
0

Pythonを使用してQuickbase APIを呼び出すときにエンコーディングに問題があります。 APIを呼び出してレコードを取得し、要求にencoding parameterを「UTF-8」と指定します。私は戻ってQuickbaseから取得したXMLレスポンスはXMLで始まるので、それは、UTF-8だと言う:Quickbase APIはCP1252エンコーディングでデータを返しますが、UTF-8を返しています。

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

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

リクエストに「Accept-Charset:utf-8」ヘッダーも渡していますが、それは効果がありません。

+3

あなたはIntuitで叫んだと思われましたか? –

+0

ええ、良いアイデア、ありがとう。最初はサポートフォームを見つけることができませんでしたが、今すぐメールを送信しました。 –

+0

彼らのCS担当者が私に連絡して言った。「私はこれをさらに調査し、現時点で最善のことは、他の誰かがエンハンストをリクエストしたかどうかを確認するためにユーザーボイス機能を検索することだと知ったUTF8エンコーディングをサポートしていれば、あなたはそれに投票することをお勧めします。ですから、https://quickbase.uservoice.com/forums/111823-quickbase-product-feedback/suggestions/2245671-unicode-supportに投票してください。その間、私はdan04の解決策を使って対処していきます。 –

答えて

2

XMLレスポンスが (UTF-8)のエンコーディングであり、実際に別のもの(CP1252)を使用しているとは何ですか?

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

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

関連する問題