Console的Code Page说明和设置方法

偶然翻看之前的文章,在一个关于mysql解决console乱码的主题里看到了自己写的一个解决console乱码的"彩蛋"。当时只是解决了乱码问题,没有详细深入一下根因,这次补上。

Code Page又称作代码页,在Windows系统中用来告诉console如何"理解"二进制代码,即将传输到控制台的字节序列,按代码页"约定"的编码方式,在屏幕上显示出来。

代码页437,是告诉console以ASCII编码字符集来显示,console就会把对应的1byte转换成屏幕上可读的显示字母(或不可见的控制字符)。

例子1:系统传过来的编码序列为:83 79 83,在code page 437下,console去查ASCII编码,按字节顺序,逐一"理解"后,显示出对应的字母是:SOS。

例子2,系统传过来的编码序列为:E4 BD A0 E5 A5 BD,在code page 437下,console去查ASCII编码,按字节顺序,逐一"理解"后,显示出对应的字母是:ä ╜ á å ¥ ╜。这个是啥呀,根本没办法认出来。这个时间,你只要把代码页切换到code page 65001,即让console去查UTF-8的编码,对应的显示就是2个中文字:你好。

是不是很神奇!这个就是有的时候,console输出是乱码的原因:console当前的代码页没法理解当前的字节序列,和当前要显示的字符编码不匹配。举个不是很准确的例子,A说英语,C听得懂中文,得找个把英语翻译成中文的翻译,这时却来了个法语翻译B,经B翻译A后出来的是法语,C听得就像"乱码"。code page的设置就是为了正确的理解字节序列。

字节 -> Code Page -> 字符,代码页就是干的这个工作。

在Windows下,设置代码页,有一个很简单的命令:chcp (change code page),使用方法如下:chcp nnn

chcp // 不带任何参数,显示当前使用的代码页

chcp 65001 // 带上指定的代码页编号,将当前代码页设置为UTF-8

相关推荐
崖边看雾2 小时前
Python学习——函数
开发语言·windows·python·学习·pycharm
深念Y2 小时前
Windows幽灵端口占用:HNS如何无声偷走你的端口
windows·python·bug·环境·端口·特权
未知违规用户4 小时前
大模型项目:RAG项目实战与FlagEmbedding模型
人工智能·windows·python·深度学习
_oP_i11 小时前
rustdesk tailscale远程桌面
windows
名字还没想好☜14 小时前
Python itertools 实战:用 groupby、chain、islice 优雅处理大数据流
linux·windows·python·迭代器·itertools
ziguo112216 小时前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
阿扬ABCD18 小时前
ipmitool的Windows版本编译
windows·驱动开发
王维同学20 小时前
Credential Provider、Filter 与 PLAP 的 CLSID 枚举
c++·windows·安全·注册表
寒水馨1 天前
Windows下载、安装 Codex CLI(附安装包codex-x86_64-pc-windows-msvc.exe)
windows·rust·codex·终端工具·自动化编程·codex cli·ai编码代理