Abs*_*Abs 2 php character-encoding
我有一个HTML文件,当我在记事本中查看它时,我可以看到以下内容:
<p><span>Copyright © 2008 Your Company Name</span>
Run Code Online (Sandbox Code Playgroud)
注意版权符号:
我加载HTML并在其上执行:
$html = file_get_contents('test.html');
$html = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8");
file_put_contents('output.html', $html);
Run Code Online (Sandbox Code Playgroud)
当我在记事本中再次查看html时,版权符号已经消失并被空格取代?!
我希望版权符号被替换为©或©.这是不是mb_convert_encoding与HTML-ENTITIES选项呢?
这是我正在使用的测试HTML文件.
您的测试HTML页面未以UTF-8编码; 因此,当mb_convert_encoding看到版权特征(序数值169)时,它不知道如何处理它所认为的无效的UTF-8序列.
因此,您应该在调用时指定正确的输入编码mb_convert_encoding:
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'ISO-8859-1');
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用类似的东西
$html = htmlentities($html, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');
Run Code Online (Sandbox Code Playgroud)
注意:我正在直接回答您的问题,但您没有说明您需要转换的内容.可能有更好的方法来实现您的目标.