php打开创建 fopen filesize等中文名文件时出错

2015年07月03日 16:10 by:唠吧小站

PHP使用fopen()、filesize()等PHP文件系统函数处理中文名文件经常会提示出错,如下错误信息:

  1. Warning: fopen(……): failed to open stream: No such file or directory in……
  2. Warning: filesize(……): stat failed for ……

这种问题通常是由于PHP的文件编码与操作系统的编码不一致引起的。当我们使用PHP处理中文名称的文件时,必须保持PHP文件系统函数中的文件名称编码与系统编码保持一致,否则PHP将无法找到指定的文件,从而导致出现上述错误。

解决该问题的办法有两种:

第一种方法:将PHP文件的编码重新变更为GBK即可

中文版的Windows操作系统的编码默认为GBK,当php文件和要创建读取的文件编码不一致时,将会出现上述错误提示信息。

第二种方法:使用函数iconv()将编码为UTF-8的字符串转换为GBK编码:

  1. <?php
  2. $fileName='唠吧小站.txt';
  3. $fileName=iconv('UTF-8','GBK',$fileName); //将字符编码从UTF-8转为GBK
  4. echo filesize($fileName); 
  5. ?>