Re: PHP读取文本文件时汉字显示乱码的处理方法
下列代码,显示的汉字正常,说明可以正常读取完整文件:
$files = file_get_contents('d:/test.txt');
echo $files;
如果在上述脚本程序的头一行,使用charset=utf-8,则可能出现汉字显示乱码。具体原因,请看本文后面的“小知识”。
例4:
如果文本文件,是EXCEL文件另存为txt格式得到的,PHP读取时可能会遇到一些问题。本人遇到的问题如下:
例5,使用函数file_get_contents读取:
图片地址http://album.sina.com.cn/pic/4c0b7a1bzx6GLBrUe4B65
图片地址http://album.sina.com.cn/pic/4c0b7a1bzx6GLBAiLS7a7
可见,显示的是乱码。这说明,用file_get_contents('d:/test.txt');读取完整文本文件时,读取的汉字内容及其显示是没有问题的。而当用fgets($fh);读取其中的一行汉字时,读取的汉字内容及其显示出现了乱码。
这说明文本文件中,每行的实际结束符(即回车符),与fgets($fh);中假定的不一致。
解决的方法是:
在服务器端的php.ini 的 charset 设置为 “UTF-8”。
然后COPY该文本文件的所有内容,删掉该文本文件,再建一同名新文件,把原来文本文件的内容PASTE到新文件,存储这个新的文本文件时,选择“UTF-8”格式。。用脚本读新文件,读取内容正确也不会出现乱码了,即使显示乱码但读取的汉字内容是正确的。
在不同的操作系统平台下,表示每行文字的结束符号是不同的,具体原因本文后面的小知识。