Странная проблема кодирования в вызове XML-RPC

Я извлекаю из Odoo 9 в Ubuntu 14.04 RUS список партнеров через XML-RPC с использованием PHP и разрывная веревка

Некоторые имена содержат один или несколько диакритических знаков:

  • причал
  • Frère Pièr

Все эти имена были введены с одного компьютера под управлением Windows 8.1 с использованием одной версии Chrome.

Странный факт заключается в том, что я получаю список, в котором некоторые диакритические знаки верны, а некоторые имеют проблемы с кодировкой, например

  • Пир
  • Fr re Pièr

Один и тот же диакритический знак в той же строке правильно закодирован или нет.

При последующих вызовах результат всегда одинаков.

Если я отредактирую строку, то это может изменить результаты, давая

  • Frère Pi r
  • Frère Pièr
  • Fr re Pi r …

Мне нужно вывести JSON, и, следовательно, мне нужно кодировать это в UTF-8: но в настоящее время это невозможно, так как я понятия не имею, что такое кодировка исходного текста (и, похоже, вообще не имеет никакой кодировки). !)

Любая идея?

2

Решение

Я обнаружил, что входящий массив был в кодировке «Latin1»

Я решил нормализовать массив, сгенерированный из вывода XML-RPC, рекурсивно применяя функцию многобайтового преобразования:

// given an XML-RPC output named $arr_output...

function descramble_diacritics(&$entry, $key) {
$entry = mb_convert_encoding($entry, 'UTF-8', 'Latin1');
}
array_walk_recursive($arr_output, 'descramble_diacritics');

header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
echo json_encode($arr_output);
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector