解决 cmd 窗口 php 输出中文乱码问题

时间:2024-04-03 14:33:56

有的时候我们需要在 cmd 窗口中直接执行 PHP 命令,但是在执行 PHP 文件的时候往往会有中文乱码出现,这个可能会摸不着头脑,不知道怎么在 cmd 窗口中正确的运行 PHP 命令中的文件。本文记录一下如何在 windows 系统中设置 cmd 窗口的默认编码。

问题描述如下:

文件 D:\1.php(住:1.php 文件所保存的编码格式是 utf-8)内容如下:

  1. header("content-type:text/html;charset=utf-8");
  2. echo "输出中文汉字";

截图所示:

解决 cmd 窗口 php 输出中文乱码问题

这时候我们在 cmd 窗口中执行这个 1.php 文件(当然是我们已经设置 php.exe 的系统环境变量):

  1. C:\Users\mafutian>D:
  2. 
    
  3. D:\>php 1.php

执行效果结果如下所示:

解决 cmd 窗口 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 后可以生效。

解决 cmd 窗口 php 输出中文乱码问题解决 cmd 窗口 php 输出中文乱码问题

修改后执行 1.php 结果下图所示:

解决 cmd 窗口 php 输出中文乱码问题

但是依旧是出现乱码,这是我也研究了好久一直没有解决,如果有人知道怎么在 windows 命令行 cmd 窗口中输出文件格式是 utf-8 且页面字符集是 utf-8 的方法可以告诉我。

在服务器的环境下,打开浏览器访问 1.php 文件也是正常的编码:

解决 cmd 窗口 php 输出中文乱码问题

另外,既然使用 utf-8 在 cmd 环境下不能够输出中文,那么就试试 gbk 或 gb2312 格式:

将上面步骤第二步中的 "65001" 改成 "936",即简体中文,另外创建一个 2.php 保存为 gb2312 编码格式,里面写入内容为:

  1. header("content-type:text/html;charset=GB2312");
  2. echo "输出中文汉字";

然后在 cmd 下面执行 2.php 文件:

解决 cmd 窗口 php 输出中文乱码问题

终于我实现了在 CMD 命令行下面执行 PHP 脚本文件能够正常的输出中文汉字,当然默认的编码是 GB2313.本文没有解决的问题就是使用 UTF-8 编码的时候,也不能正确的输出中文。期待有人解决之后指点迷津。

附录:

  MS-DOS 代码页描述:

65001 UTF-8

  950 繁体中文

  936 简体中文(默认)

本文链接地址:http://www.mafutian.net/280.html