XML-RPC 调用中的奇怪编码问题
Weird encoding issue in XML-RPC call
我正在 Ubuntu 14.04 ENG 上通过 XML-RPC 使用 PHP 和 ripcord
从 Odoo 9 检索合作伙伴列表
有些名字包含一个或多个变音符号:
- 皮埃尔
- 皮埃尔兄弟
所有这些名称都是从一台计算机 运行 Windows 8.1 使用 Chrome.
的一个版本输入的
奇怪的是,我得到了一个列表,其中一些变音符号是正确的,而另一些则有编码问题,例如:
- 皮尔
- 皮埃尔神父
同一字符串中的同一变音符号是否正确编码。
在后续调用中,结果始终相同。
如果我编辑字符串,那么它可能会改变结果,给出
- 皮埃尔神父
- 皮埃尔兄弟
- Fr�re Pi�r...
我需要输出一个 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);
我正在 Ubuntu 14.04 ENG 上通过 XML-RPC 使用 PHP 和 ripcord
从 Odoo 9 检索合作伙伴列表有些名字包含一个或多个变音符号:
- 皮埃尔
- 皮埃尔兄弟
所有这些名称都是从一台计算机 运行 Windows 8.1 使用 Chrome.
的一个版本输入的奇怪的是,我得到了一个列表,其中一些变音符号是正确的,而另一些则有编码问题,例如:
- 皮尔
- 皮埃尔神父
同一字符串中的同一变音符号是否正确编码。
在后续调用中,结果始终相同。
如果我编辑字符串,那么它可能会改变结果,给出
- 皮埃尔神父
- 皮埃尔兄弟
- Fr�re Pi�r...
我需要输出一个 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);