XML-RPC调用

时间:2016-09-07 15:56:41

标签: php encoding openerp xml-rpc diacritics

我正在使用PHP和ripcord

通过XML-RPC从Udontu 14.04 ENG上的Odoo 9中检索合作伙伴列表

某些名称包含一个或多个变音符号:

  • Pièr
  • FrèrePièr

所有这些名称都是使用一个版本的Chrome从一台运行Windows 8.1的计算机上输入的。

奇怪的事实是,我得到一个列表,其中一些变音符号是正确的,其他一些有编码问题,如:

  • 毕尔
  • Fr rePièr

相同字符串中的相同变音符号是否正确编码。

在后续调用中,结果始终相同。

如果我编辑字符串,那么它可以改变结果,给出

  • FrèrePi r
  • FrèrePièr
  • Fr rePi r......

我需要输出一个JSON,因此我需要用UTF-8对它进行编码:但目前还不可能,因为我不知道原始文本的编码是什么(而且似乎没有任何编码)完全编码!)

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我发现传入的数组是charset“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);