php识别“中文文件名”文件报错问题
2016-11-21 10:35
267 查看
问题的发现:
程序员都拥有懒惰的智慧才智,今天我就在Wampserver上运行了一个php程序,目的是批量处理文件的文件名,但是中途却出现了一个很奇怪的错误,如下:(1)我在php文件所在目录,手动创建了文件名为“测试.txt”和“test.txt”的文件;
(2)在PHP代码中敲入如下代码:
<?php var_dump(file_exits("测试.txt")); var_dump(file_exits("test.txt"));
运行结果如下:
false true
为什么对于“中文文件名”的文件会显示无法查找呢?深入思考一下:
(1)计算机中查找文件,无非就是把“目录”放到文件系统中逐级查找,而目录是一个字符串,字符串对于计算机来说就是二进制;
(2)查找不到,说明程序代码中的这串二进制数据和文件系统中相应文件的目录的二进制数据不一致;
(3)我的PHP文件编码是“UTF8”,所处的操作系统的编码是“GB2312”;
(4)好了,结论就是,编码的不一样,导致文件系统无法识别UTF8编码下的中文路径;
解决方法:
var_dump(file_exits(iconv('UTF-8','GB2312',"测试.txt")));
输出:
true
问题解决了,这次错误的经验:
在使用非ASCII码表字符时,必须考虑的以下几个问题是:(1)操作系统的编码;
(2)存储环境的编码;
(3)代码文件的编码;
(4)目标运行环境的编码;
相关文章推荐
- 解决PHP在IE中下载文件,中文文件名乱码问题
- PHP文件上传并解决中文文件名乱码问题
- 解决PHP在IE浏览器下载文件,中文文件名乱码问题
- 解决PHP在IE浏览旗下载文件,中文文件名乱码问题
- PHP Header下载文件在IE文件名中文乱码问题
- php中fopen不能创建中文文件名文件的问题
- php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
- [完]PHP文件下载 下载GET值中含有中文字符的文件,保存中文文件名,文件不能打开,遇到的编码问题
- php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
- php中fopen不能创建中文文件名文件的问题
- 解决PHP在IE浏览器下载文件,中文文件名乱码问题
- php上传中文文件文件名乱码问题
- PHP中上传含有中文的文件名的文件出现乱码问题
- 浅谈php中fopen不能创建中文文件名文件的问题
- 终于解决了中文文件名文件下载的问题
- linux下将中文文件名文件cp到windows目录下后文件名乱码问题的解决
- 文件下载中文文件名问题
- c# web 下载文件(解决中文文件名乱码问题)
- 解决不同浏览器上中文文件名的下载乱码问题php验证可行的测试过ie ff 和chrome的
- 解决HttpClient的FilePart上传文件中使用中文名称文件名乱码问题