php fopen函数创建中文文件名出错
PHP使用fopen()、filesize()等PHP文件系统函数处理中文名文件经常会提示出错,如下错误信息:
Warning: fopen(……): failed to open stream: No such file or directory in……
Warning: filesize(……): stat failed for ……
这种问题通常是由于PHP的文件编码与操作系统的编码不一致引起的。当我们使用PHP处理中文名称的文件时,必须保持PHP文件系统函数中的文件名称编码与系统编码保持一致,否则PHP将无法找到指定的文件,从而导致出现上述错误。
解决该问题的办法有两种:
第一种方法:将PHP文件的编码重新变更为GBK即可
中文版的Windows操作系统的编码默认为GBK,当php文件和要创建读取的文件编码不一致时,将会出现上述错误提示信息。
第二种方法:使用函数iconv()将编码为UTF-8的字符串转换为GBK编码:
- <?php
- $fileName='唠吧小站.txt';
- $fileName=iconv('UTF-8','GBK',$fileName); //将字符编码从UTF-8转为GBK
- echo filesize($fileName);
- ?>
注意:尽量不要使用中文名字我们使用拼音都比中文要好,像linux,php对中文支持都没有英文好了。