MS-Word 和一些其他来源使用 CP-1252,而且它与 Latin1 ('ISO-8859-1') 很接近,这会导致很多混淆。最让我困惑的是发现 mySQL 默认使用 CP-1252。
如果你发现自己想做类似的事情,你可能会遇到麻烦
<?php
$trans[chr(149)] = '•'; $trans[chr(150)] = '–'; $trans[chr(151)] = '—'; $trans[chr(152)] = '˜'; $trans[chr(153)] = '™'; ?>
不要这样做。不要这样做!
你可以使用
<?php
$translationTable = get_html_translation_table(HTML_ENTITIES, ENT_NOQUOTES, 'WINDOWS-1252');
?>
或者直接转换
<?php
$output = htmlentities($input, ENT_NOQUOTES, 'WINDOWS-1252');
?>
但是你的网页可能是 UTF-8 编码的,而且你可能并不真正想要 CP-1252 文本到处飞,所以先修复字符编码
<?php
$output = mb_convert_encoding($input, 'UTF-8', 'WINDOWS-1252');
$ouput = htmlentities($output);
?>