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对中文支持都没有英文好了。
JA5A 正则表达式陈广佳版本(超详细)
Linux Lite 6.4今日发布基于 Ubuntu 22.04.2 LTS/原生应用支持 Zstd 压缩
0.1秒的价值!浅谈Web前端页面提速问题实用指南
Linux 6.3发布第4个候选版本 diffstat占比超过50%
linux无法识别ntfs格式U盘怎么办? 解决linux不识别nfst格式u盘问题技巧
Linux Mint 21.2 将于 6 月发布 主要改进了登录屏幕