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

相关推荐
技术不好的崎鸣同学1 小时前
第一章:PEB结构解析与内存定位
windows·安全·系统安全
江湖人称菠萝包5 小时前
【Windows】《深入浅出Windows API程序设计:编程基础篇》笔记-Chapter1-基础知识
windows·笔记
白山编程大哥5 小时前
Java 迭代器接口详解:从 Iterator 到 ListIterator 的完整指南
java·开发语言·windows
一叶龙洲6 小时前
Ubuntu从图标到卸载应用
linux·windows·ubuntu
江湖人称菠萝包6 小时前
【Windows】《深入浅出Windows API程序设计:编程基础篇》笔记-Chapter2-Windows窗口程序
windows·笔记
奈斯先生Vector8 小时前
AIGC 视频生成实战:用 Kling Video 拆解文生视频、图生视频与完整工作流
开发语言·人工智能·windows·python·aigc·音视频
暖焰核心8 小时前
迭代器与模板的结合——stl的list
c++·windows·list
2401_861678628 小时前
Git 在 Windows 使用
windows·git·elasticsearch
en.en..11 小时前
LVGL 普通函数指针与结构体函数指针原理
linux·windows·microsoft
今夕资源网11 小时前
Windows 本地 HTTPS 配置教程:使用 CertTool 创建自签名证书并部署到宝塔
windows·网络协议·https