我正在使用 exec 和 SVN 日志命令在我们公司的内部网页上从 SVN 获取一些信息。该网页按要求是 ISO-8859-1,但 SVN-server/exec 输出是 UTF8,特殊字符是十进制编码而不是“正常”编码。
据我所知,这使得无法使用 UTF8_decode 或类似功能,而且我无法真正掌握返回的确切格式,否则 str_replace 暂时可以作为一种解决方法。例如,据我所见,ä 由 ?\195?\164 表示,但我无法在输出中找到并替换该字符串,因此可能还有其他一些事情正在发生,我错过了
我的 SVN 服务器是 CentOS,网络服务器是运行 Apache 的 Debian,如果罪魁祸首可能在某处
伪代码
exec('svn log PATH' , $output);
foreach ($output as data){
$data = str_replace(array('?\195?\165', '?\195?\182'), array('å','ö'), $data);
echo $data . '<br>';
}
foreach ($output as data){
$data = utf8_decode($data);
echo $data . '<br>';
}
foreach ($output as data){
$data = mb_convert_encoding($data, 'ISO-8859-1', 'UTF-8');
echo $data . '<br>';
}
回显的示例字符串是“Buggfix f?\195?\182r 7.1.34”,但应该是“Buggfix för 7.1.34”