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

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

图1

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

图2

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

图3

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

图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如下:

图5

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

图6

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

图7

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

图8

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

图9

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

图10

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

图11

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

图12

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

图13

永夜