前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何让Windows的命令行窗口CMD以及Powershell支持UTF8字符集(编码)

如何让Windows的命令行窗口CMD以及Powershell支持UTF8字符集(编码)

作者头像
Yiiven
发布2022-12-15 14:05:47
2.5K0
发布2022-12-15 14:05:47
举报
文章被收录于专栏:怡文菌怡文菌

我在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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档