Обработка данных Unicode в XMLRPC

1

Мне нужно перенести данные в OpenERP через XMLRPC с помощью TerminatOOOR.
Я посылаю имя со значением "Rotule right Aurélia".
В Python имя должно быть закодировано со значением: "Rotule right Aur\xc3\xa9lia"
Но в TerminatOOOR (клиент xmlrpc) данные кодируются значением "Rotule middle Aur\357\277\275lia"
Таким образом, на стороне сервера значение данных не правильно декодировано, и я получаю плохие данные.

TerminateOOOR - это рубиновый плагин для Kettle (продукт Java), и я предполагаю, что он должен кодировать данные utf-8.
Я просто не знаю, почему так происходит.
Любая помощь?

Теги:
unicode
xml-rpc

2 ответа

1

Эта проблема исходит от чайника. Моя программа использует Kettle для получения файла Excel, получает активный лист и передает данные на этом листе TerminateOOOR для дальнейшей обработки. На этапе чтения данных из файла Excel Kettle не может распознать кодировку, тогда он дает плохие данные TerminateOOOR.

Моя работа вокруг решения вручную экспортирует excel в csv, прежде чем предоставлять данные TerminateOOOR. Делая это, я не использую эту функцию для сопоставления имени столбца excel имя переменной (используемое чайником).

0

во-первых, всякий раз, когда вы имеете дело с текстом (и весь текст обязательно должен содержать некоторый символ , доступный в Python 2.6 и 2.7).

в основном, когда вы отправляете текст или любые другие данные по проводу, это произойдет только в виде байтов (октетов бит), поэтому в какой-то момент его нужно будет закодировать. попытайтесь выяснить, где именно происходит эта кодировка в вашей цепочке инструментов; если необходимо, используйте инструмент отладки (или разверните инструкции print( repr( x ) )), чтобы просмотреть соответствующие переменные. другое программное обеспечение, которое вы упомянули, предположительно написано на PHP, языке который, как известно, имеет проблемы с Unicode. вы говорите, что "он должен кодировать данные с помощью utf-8", но, с другой стороны, когда принимающая сторона видит данные входящего запроса RPC, эти данные уже должны быть в utf-8. его нужно будет декодировать, чтобы снова получить юникод.

  • 0
    Это не проблема Python или xmlrpclib. Я могу сделать хорошо, как это в скрипте Python. color = {'name': u'Rotule right Aurélia '} oorpc.create (' my.color ', color). За сценой интерпретатор распознает кодировку данных (указав # - - coding: utf-8 - -), закодировал ее и отправил на сервер, который знает, как обращаться с закодированными данными. Я предполагаю, что моя проблема в Ruby 1.8 (Terminatooor), хорошо известном отсутствием поддержки юникода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню