Home >Backend Development >PHP Tutorial >帮我看看简单php乱码原因,无语!

帮我看看简单php乱码原因,无语!

WBOY
WBOYOriginal
2016-06-23 14:15:091343browse

1.打开EditPlus

2.新建一个空白php文件

3.写入

<?phpecho "很好";?>


4.保存为utf-8格式

5.访问刚刚的页面输出 寰?ソ,直接是乱码。


据我知道的原因是:应该保存成 utf-8+BOM格式,才能显示中文。

现在问题来了:
1.从我学php开始就知道php要保存成utf-8无BOM模式,好像一起没出什么中文乱码问题?
2.我查看了一些cms,框架的php文件,全部是utf-8无BOM模式,他们是怎么回避上面的无BOM模式中文乱码问题的?



回复讨论(解决方案)

原因在于你的浏览器默认是gbk编码,因此会乱码,你用header指定下输出字符集就可以了。

原因在于你的浏览器默认是gbk编码,因此会乱码,你用header指定下输出字符集就可以了。

同样是乱码,你保存成无BOM格式试下,还是乱码,就是BOM的问题

<?phpheader("Content-type:text/html;charset=utf-8");echo "很好a";?>





设置header可以了,没有乱码了,难道是我理解的问题?现在我是这样理解的:

1.php文件统一保存成无BOM格式。

2.php页面一定含有中文,如果作为页面输出需要指定header,如果不输出显示可以不指定header。

1、如果你要保存为utf-8编码,则肯定要去除bom头。
2、原理是这样,具体还要看需求吧。




设置header可以了,没有乱码了,难道是我理解的问题?现在我是这样理解的:

1.php文件统一保存成无BOM格式。

2.php页面一定含有中文,如果作为页面输出需要指定header,如果不输出显示可以不指定header。
可以这样理解,设定的header编码还要跟你输出的编码一致

这是我刚开始学习时,总结为(三码为一),每次一乱码,我就背这三码,保治网页乱码,

1.文档流:header("Content-type:text/html;charset=utf-8");

2.数据库:$pdo->query(‘SET NAMES UTF8’);

3.PHP脚本文件:utf-8无BOM格式。

以后做php_cli时会遇到不周解决办法,就不能用utf-8了,要用ansi,先记住就好。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn