get_html_translation_table()和htmlspecialchars()不起作用时该怎么办

今天,当我处理来自非英语站点的一些文本时,我发现了一个小问题。我发现该文本已正确加载,但是由于它采用UTF-8编码,因此PHP无法使用htmlspecialchars()或不适get_html_translation_table()用于该字符串以正确编码外来字符。这些方法没有任何作用。这是因为PHP(版本5.2.x之前)本身不支持Unicode字符编码,因此无法转换UTF-8格式的字符。

要解决此问题,只需_decode()在字符串上使用utf8函数将其转换为可用格式。

// 从uft8转换
$string = utf8_decode($string);
 
// 翻译HTML实体
$trans = get_html_translation_table(HTML_ENTITIES);
$string = strtr($string, $trans);

希望这对遇到同样问题的人有所帮助。另外,PHP6将支持unicode字符编码,因此在发布PHP6时可能必须再次考虑这一点。