【发布时间】:2014-04-22 13:48:50
【问题描述】:
我已经在谷歌上搜索了一下,也在这里搜索,但可以找到解决方案。我正在使用 PHP。我正在读取一个文本字符串(X509 证书的一部分)并将 é 编码为 \xC3\xA9 (André => Andr\xC3\xA9)。
我试过MonkeyPhysics's解决方案:
preg_replace("#(\\\x[0-9A-F]{2})#ei", "chr(hexdec('\\1'))", $string);
但后来我得到 André
我玩过 replacement 部分;
mb_convert_encoding('&#' . hexdec('\\1') . ';', 'ISO-8859-1', 'UTF-8')
(还有 to_encoding 和 from_encoding)
我也看过How to transliterate non-latin scripts?,但没有更进一步。
这应该是标准转换吧?
【问题讨论】:
-
首先不推荐使用 e 修饰符,使用 preg_replace_callback 代替(参见 PHP 手册,很容易转换)。在使用mb_convert_encoding之前,请尝试将
<meta charset="UTF-8"/>放在显示代码结果的html页面的header中。