200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > PHP中访问中文名称的文件时出错

PHP中访问中文名称的文件时出错

时间:2020-04-24 09:03:36

相关推荐

PHP中访问中文名称的文件时出错

对于一些刚刚接触PHP文件系统相关函数的程序开发人员来说,在初次使用fopen()、filesize()等PHP文件系统函数处理中文名称的文件时,页面可能会显示如下错误信息:

<?php

$fileName = "D:/中文测试.exe";

$f = fopen($fileName, "r");

//错误提示

//Warning: fopen(D:\中文测试.exe): failed to open stream: No such file or directory in D:\PHP\core\test.php on line 4

echo filesize($fileName);

//错误提示

//Warning: filesize(): stat failed for D:\中文测试.exe in D:\PHP\MySoft\core\func.php on line 8

?>

经过仔细检查发现,在D盘的根目录下确实存在名为”中文测试.exe”的文件,并且没有被其他应用程序占用,就是无法使用fopen()等函数操作该文件,并且提示的信息中表名PHP找不到指定的目录或文件。

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

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

第一种方法是更改PHP文件的编码,使其与操作系统编码保持一致。例如,你的PHP代码文件的编码为UTF-8,但是简体中文版的Windows操作系统的编码默认为GBK,当两者的编码不一致时,将会出现上述错误提示信息。因此,我们可以将PHP文件的编码重新变更为GBK即可。

另一种方法是使用函数iconv()将编码为UTF-8的字符串转换为GBK编码,这样也能够起到同样的效果。示例代码如下:

<?php

$fileName = "D:\\中文测试.exe";

//将字符编码从UTF-8转为GBK

$fileName = iconv("UTF-8", "GBK", $fileName);

echo filesize($fileName); //将输出对应文件的大小(单位:字节)

?>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。