Quickbase API возвращает данные в кодировке CP1252, но сообщает, что возвращает UTF-8 - PullRequest
0 голосов
/ 02 апреля 2012

У меня проблемы с кодировками при вызове Quickbase API с использованием Python. Я вызываю API для получения записи и указываю в кодировке параметр кодирования как «UTF-8». Ответ XML, полученный от Quickbase, говорит, что это 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", но это не имеет никакого эффекта.

1 Ответ

2 голосов
/ 02 апреля 2012

Любая идея, почему Quickbase говорит, что ответ XML - это одна кодировка (UTF-8), но на самом деле используется другой (CP1252)?

Возможно, потому что разработчик Quickbase скопировал и вставил декларацию XML, фактически не понимая, что означает encoding.

Самый простой обходной путь - использовать xml_response = xml_response.decode('windows-1252').encode('UTF-8') для получения реальной строки UTF-8 для передачи в синтаксический анализатор XML.

...