php htmlentities如何解决中文乱码的问题

时间:2016-06-28
我们大家都只到php htmlentities函数的作用是将预定义的字符转化为html实体,但当htmlentities函数作用于含有中文的字符串时,会出现乱码的现象,这是什么原因呢,本文章向大家介绍php htmlentitie出现中文乱码的原因及解决办法。

php htmlentities将预定义的字符转化为html实体,也就是让浏览器输出html代码,而不是输出浏览器解析后的html,比如说在表单时候,我们想让表单中输入html代码原样显示在浏览器上,这个时候就需要使用htmlentities函数了。

下面来看一个实例:

<?php
    $str = '<a href="http://www.manongjc.com">码农教程</a>';
    echo htmlentities($str);
?>

在浏览器上输出结果如下

<a href="http://www.manongjc.com">ç �å��æ��ç¨�</a>

查看源码如下:

&lt;a href=&quot;www.phpddt.com&quot;&gt;&ccedil;‚&sup1;&ccedil;‚&sup1;&eacute;€š&lt;/a&gt;

从源码可以看出,htmlentities已将预定义的字符转化为html实体,小于号转换为&lt; 大于号转换为&gt; 双引号转化为&quot;

但是中文出现乱码了,这是因为我们没有对htmlentities函数指定编码,下面方法将不会出现中文乱码

<?php
echo htmlentities($str, ENT_COMPAT , "UTF-8");
?>

如果有中文,一般设置为UTF-8编码即可。

更多讲解请看:

php htmlentities函数讲解及使用实例

php htmlentities() 函数把字符转换为 HTML 实体