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

相关推荐
淡海水3 小时前
01-07-运行时-GC深度剖析-内存分配回收与结构选择
jvm·windows·unity·gc
DAVIED95 小时前
llama.cpp 本地部署完全指南
windows·llama·wsl·llamacpp
云上飞476369627 小时前
Windows WSL2 + Docker 环境下NVIDIA PhysicsNeMo 安装指南
windows·docker·physicsai·physicsnemo
weixin_6687 小时前
取消Windows 11 默认精简的鼠标右键文件夹菜单
windows·计算机外设
love530love7 小时前
彻底清理 Windows 右键“打开方式“中的重复/失效程序项(PyCharm 多版本残留实战 + 自动化脚本)
运维·人工智能·windows·pycharm·jetbrains·toolbox
王维同学19 小时前
进程模块枚举、映像身份与线程启动地址关联
c++·windows·安全
x²+(y-√³x²)²=11 天前
Linux打包文件到Windows,文件/文件类型丢失
linux·运维·windows
Rudon滨海渔村1 天前
windows10如何删除多余的输入法 - 仅保留English+拼音
windows·输入法
YCOSA20251 天前
雨晨 Windows 11 IoT 企业版 LTSC 26H1 特制 28000.2796
windows·物联网
Jay-r1 天前
DeepSeek Harness 极简上手:装好、玩熟、让它自己长新能力
人工智能·windows·ai·github·ai编程·deepseek·harness