而后,我打开EditPlus,改变EditPlus的默认编码环境为Unicode(详细步骤问度娘就能够)。文件-->打开,打开test.txt文件,发现乱码问题(此处,我本身也有个疑问。我在笔记本上測试时出现乱码。但在台式机測试时,有时候不出现乱码,产生这个问题的解决办法可能和系统环境有关,也可能和EditPlus的版本号有关。我没有再深究。假设有明确的朋友,评论一下,谢谢)。php
EditPlus打开test.txt文件,使用的是Unicode编码规则来解码ANSI编码的字符。经过补充知识的内容,显而易见会产生乱码问题。html
补充知识:
“你好中国”相应的Unicode编码为“\u4F60 \u597D \u4E2D \u56FD”
2.文件是保存在硬盘上的,而硬盘仅仅能以2进制(经过是否被磁化来区分是1仍是0)存储文字等信息,test.txt在硬盘上存储的数据域为“C4E3 BAC3 D6D0 B9FA”的2进制表示形式。
如下,開始介绍浏览器乱码问题,我是用的是phpstrom集成开发环境(默认编码环境为utf-8)
编辑test.php文件代码例如如下:
<?php
echo "汉字会产生乱码";
?浏览器
>
经过360浏览器訪问test.php文件,显示结果例如如下:
”姹夊瓧浼氫骇鐢熶贡鐮�“(出现了乱码问题)
分析产生乱码缘由:
右击产生乱码的网页,而后点击“编码”,发现此时360浏览器编码为“中文(简体)GBK”,使用GBK解码utf-8编码的字符文件,固然会产生乱码。
解决方法:
1.改变浏览器的编码。点击编码后,选择uft-8,输出的结果显示正常:”汉字会产生乱码“。
2.在设置header charset解决这个问题。test.php文件里加入一行设置编码的代码,例如如下:
<?php
header("Content-type:text/html;Charset=utf-8");
echo "汉字会产生乱码";
?>
(显示结果是正常的)
使用浏览器自带的开发者工具(F12),获得响应头中的信息:
HTTP/1.1 200 OK
X-Powered-By: PHP/5.3.10
Content-type: text/html;Charset=utf-8
Server: PhpStorm 7.1.3
Content-Length: 21
此时发现360浏览器编码为Unicode(utf-8)。也就是说360浏览器依据响应头中的Charset=utf-8本身主动选择编码为utf-8来解码发送过来的uft-8编码的字符,显示结果正确。
工具