windows 下 php 7.1 命令行执行中文文件名的 PHP 文件
在PHP5.6时代直接执行
php.exe 文件.php
是没有问题的。
在win的命令行中 活动代码页命令
chcp
修改活动代码页
chcp 936 //gbk
chcp 65001 //utf-8
但是在php 7.1下 执行 php.exe 首先会修改命令行的活动代码页
这是一个自动行为 程序会自带一个 chcp 65001 然后再执行 php 文件
中文文件名作为参数传递的时候 程序内部就乱码找不到文件了。
关于这个问题 在百度搜几乎无解 于是在 php 官网的 bug 反馈里面翻到这么一页
https://bugs.php.net/bug.php?id=73716&edit=2
大概在
[2016-12-12 21:30 UTC] [email protected]
解决方案:
打开php.ini 搜索 internal_encoding 然后改为 internal_encoding = “cp936”
default_charset=“UTF-8” 这一项应该是默认的 如果没有就加上
这样就对应了简体中文的 windows 环境 不过这个方案的缺点就是写的很死
如果把 PHP 打包发布的话 大概是只能在简中的系统下执行
改了这个以后,PHP文件还是用UTF-8编码来写
不过输入路径作为参数 也就是argv变量里面的内容 记得转码成 UTF-8