有的时候我们需要在 cmd 窗口中直接执行 PHP 命令,但是在执行 PHP 文件的时候往往会有中文乱码出现,这个可能会摸不着头脑,不知道怎么在 cmd 窗口中正确的运行 PHP 命令中的文件。本文记录一下如何在 windows 系统中设置 cmd 窗口的默认编码。
问题描述如下:
文件 D:\1.php(住:1.php 文件所保存的编码格式是 utf-8)内容如下:
-
header("content-type:text/html;charset=utf-8");
-
echo "输出中文汉字";
截图所示:
这时候我们在 cmd 窗口中执行这个 1.php 文件(当然是我们已经设置 php.exe 的系统环境变量):
-
C:\Users\mafutian>D:
-
D:\>php 1.php
执行效果结果如下所示:
从图中可以看出,在 cmd 窗口中已经输出了中文乱码,而实际上需要输出的是字符:"输出中文汉字",而 1.php 文件输出的编码格式是 utf-8 ,从这一点说明 cmd 窗口的默认编码一定不是 utf-8 ,所以我们需要将 cmd 窗口设置成 utf-8 编码。
解决办法如下:
1. 操作:同时按"win + R" ,并输入 regedit 进入注册表
2. 找到 HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe,如果该项下已存在 CodePage 项,则把值改为十进制 "65001",点击确定即可;如果不存在,在该项下新建一个 DWORD(32位值),命名为 "CodePage",值设为 "65001"。然后关闭注册表管理器。
3. 这时候关闭所有的 cmd 窗口,并重启 cmd 后可以生效。
修改后执行 1.php 结果下图所示:
但是依旧是出现乱码,这是我也研究了好久一直没有解决,如果有人知道怎么在 windows 命令行 cmd 窗口中输出文件格式是 utf-8 且页面字符集是 utf-8 的方法可以告诉我。
在服务器的环境下,打开浏览器访问 1.php 文件也是正常的编码:
另外,既然使用 utf-8 在 cmd 环境下不能够输出中文,那么就试试 gbk 或 gb2312 格式:
将上面步骤第二步中的 "65001" 改成 "936",即简体中文,另外创建一个 2.php 保存为 gb2312 编码格式,里面写入内容为:
-
header("content-type:text/html;charset=GB2312");
-
echo "输出中文汉字";
然后在 cmd 下面执行 2.php 文件:
终于我实现了在 CMD 命令行下面执行 PHP 脚本文件能够正常的输出中文汉字,当然默认的编码是 GB2313.本文没有解决的问题就是使用 UTF-8 编码的时候,也不能正确的输出中文。期待有人解决之后指点迷津。
附录:
MS-DOS 代码页描述:
65001 UTF-8
950 繁体中文
936 简体中文(默认)
本文链接地址:http://www.mafutian.net/280.html