没有不值得去解决的问题,也没有不值得去学习的技术!

在 Windows 10 64、PHP 5.6 下重命名中文名文件,提示错误的解决

报错:rename(E:/wwwroot/avatar/BEIJI/侯森.jpg,E:/wwwroot/avatar/BEIJI/378477.jpg): ϵͳ�Ҳ���ָ�����ļ��� (code: 2)

1、重命名某个目录中的文件名,其代码,如图1

重命名某个目录中的文件名
图1

2、报错:rename(E:/wwwroot/avatar/BEIJI/侯森.jpg,E:/wwwroot/avatar/BEIJI/378477.jpg): ϵͳ�Ҳ���ָ�����ļ��� (code: 2),如图2

报错:rename(E:/wwwroot/avatar/BEIJI/侯森.jpg,E:/wwwroot/avatar/BEIJI/378477.jpg): ϵͳ�Ҳ���ָ�����ļ��� (code: 2)
图2

3、使用 file_exists 函数,检查文件是否存在,如果存在,打印1,如果不存在,打印0,如图3

使用 file_exists 函数,检查文件是否存在,如果存在,打印1,如果不存在,打印0
图3

4、打印结果为0,表示检查文件的结果为不存在,如图4

打印结果为0,表示检查文件的结果为不存在
图4

5、打开网址:http://php.net/manual/zh/function.rename.php ,发现一段提示:,用以解决此类问题,如图5
翻译:在windows(XP,vista,7 …)http://fr.wikipedia.org/wiki/Windows-1252“,如果你的文件名包含口音,它基本上不起作用,所以使用iconv函数从 utf-8到cp1252如下:

在windows(XP,vista,7 ...)http://fr.wikipedia.org/wiki/Windows-1252“,如果你的文件名包含口音,它基本上不起作用,所以使用iconv函数从 utf-8到cp1252如下:
图5

6、iconv — 字符串按要求的字符编码来转换,将字符串 E:/wwwroot/avatar/BEIJI/侯森.jpg 从 UTF-8 转换编码到 GB2312,代码,如图6

iconv — 字符串按要求的字符编码来转换,将字符串 E:/wwwroot/avatar/BEIJI/侯森.jpg 从 UTF-8 转换编码到 GB2312
图6

7、打印结果为1,表示检查文件的结果为存在,如图7

打印结果为1,表示检查文件的结果为存在
图7

8、最终实现代码,如图8

最终实现代码
图8

9、目录 E:/wwwroot/avatar/BEIJI 中的文件,如图9

目录 E:/wwwroot/avatar/BEIJI 中的文件
图9

10、运行脚本,目录 E:/wwwroot/avatar/BEIJI 中的文件,已经重命名成功,如图10

运行脚本,目录 E:/wwwroot/avatar/BEIJI 中的文件,已经重命名成功
图10

11、运行脚本,报错:iconv(): Detected an illegal character in input string,如图11
翻译:iconv():检测到输入字符串中存在非法字符

运行脚本,报错:iconv(): Detected an illegal character in input string
图11

12、打印文件名,发现非法字符应该为 吴䶮,如图12

打印文件名,发现非法字符应该为 吴䶮
图12

13、将 GB2312 修改为 GB18030(如果修改为GBK的话,仍然报错,GB18030字符集包含GBK字符集和中日韩(CJK) Ext-A ),如图13

将 GB2312 修改为 GB18030(如果修改为GBK的话,仍然报错,GB18030字符集包含GBK字符集和中日韩(CJK) Ext-A )
图13

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系