XML-RPC 调用中的奇怪编码问题

Weird encoding issue in XML-RPC call

我正在 Ubuntu 14.04 ENG 上通过 XML-RPC 使用 PHP 和 ripcord

从 Odoo 9 检索合作伙伴列表

有些名字包含一个或多个变音符号:

所有这些名称都是从一台计算机 运行 Windows 8.1 使用 Chrome.

的一个版本输入的

奇怪的是,我得到了一个列表,其中一些变音符号是正确的,而另一些则有编码问题,例如:

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

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

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

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

有什么想法吗?

我发现传入的数组是字符集 "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);