我在CMD命令行窗口中运行PHP脚本时遇到输出中文乱码的问题,如下图:
起初我也是很迷茫,以为是PHP的问题,检查了脚本(客户端和服务端都是utf-8)编码已经统一了,为何还是乱码呢,卡壳很久之后突然反应过来会不会是Windows的问题,于是把脚本拿到linux下运行,一切正常,至此可以确定是命令行窗口的编码和脚本编码不一致导致的。
简体中文,也就是GB2312(或者GBK等)字符集,在我们平时的使用CMD时也没什么问题,因为系统内字符集是统一的,但是当我们使用命令行执行一些外部脚本的时候就有可能出现中文乱码(因为大多数脚本为了支持更多语言,都会选用unicode编码,常见的就是utf-8),比如我上面提到的PHP脚本。
那么我们应该如何做,才能切换CMD的编码呢,往下看:
在谷歌娘和度娘哪里问了一大圈,都说要把字体改成Lucida Console,可是哪里有什么Lucida Console这个字体,你们看,只有点阵字体和新宋体(甚至有些朋友连新宋体都没有)。
然后又想到了CHCP这个命令,嗯,我们可以用它查看当前代码页,也可以用他修改当前代码页
CHCP是MS DOS中的命令,用来显示或设置活动代码页编号的。用法是:
CHCP number
其中number指定的是代码页的编号。这个参数是可选的,在命令行下如果不指定这个代码页编号,那么默认是显示当前的代码页编号。比如,在默认的cmd窗口中,我们输入chcp,显示的将类似下图这样的结果,936(简体中文的意思):
然后去查各个编码集的代码页编号,找到UTF-8的代码也编号是:65001
那么我们的解决方法就出来了:
1.执行命令: chcp 65001
2.切换字体为:Lucida Console(PS:我在执行了第1步命令之后,字体自动变成了Lucida Console)
这个时候,我们脚本输出的中文就不再是乱码啦,如下图:
最后,列个表,把代码页编码记录一下。
国家(地区)/语言 | 代码页编号 |
---|---|
美国/英语 | 437 |
日文 | 932 |
韩文 | 949 |
简体中文 | 936 |
繁体中文 | 950 |
UTF-8 | 65001 |
多语言(拉丁文Ⅰ) | 850 |
斯拉夫语(拉丁文Ⅱ) | 852 |
西里尔文(俄语) | 855 |
土耳其语 | 857 |
葡萄牙语 | 860 |
冰岛语 | 861 |
加拿大-法语 | 863 |
日耳曼语 | 865 |
俄语 | 866 |
现代希腊语 | 869 |
本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:Yiiven https://cloud.tencent.com/developer/article/2193157
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有