C语言字符编码
- C程序在windows控制台中的输入输出
- 阐述程序在执行环境中字符编码的过程
- 1.用户键入拼音nihao,
- 输入法根据用户输入的拼音,
- 给出字符候选列表
- 2.用户阅读完候选列表后从中选“你好”
- 3.输入法询问当前与输入法关联的程序(windows控制台)的输入编码格式,得到特定的一种编码格式
- 设gbk
- 4.输入法将字符串“你好”用gbk方式编码,得到“你好”的二进制码
- 5.输入法将得到的二进制码放在标准输入流中
- (以上5点的阐述或许不够详尽,不准确
- 如果你并不是在编写一个输入法,那你完全可以认为当你输入时,你的计算机会严格按照以上5个步骤执行相关操作,
- 即使当你输入时内部的代码实现极其复杂,这在大多数情况下对于我们而言都可以视作透明的,不会对我们编写的程序产生任何影响)
-
6.用户此时调用标准输入函数
- 函数将标准输入流中上一步放入的二进制码取出,
- 原原本本存到用户指定的数组
-
7 又调标准输出,将上一步中存到数组中的内容输出
-
8.标准输出将数组中的二进制码复制到标准输出流
- 并通过某种方式通知windows控制台输出
-
9.windows控制台接到通知后把上一步中放入标准输出流中的二进制码取出
- 查询windows控制台自身的输出编码格式
- 设utf-8
-
10.windows控制台使用查询到的编码方式解读二进制码,
- 并将解读的结果打印在屏幕
-
(从windows控制台成功解读二进制码到解读的结果被打印在屏幕上,这期间经历了一些复杂代码,
- 不需要关心这期间发生了什么,这些复杂的代码实现不会对我们编写的程序产生任何影响)
-
二进制码是“你好”通过gbk编码。
-
windows控制台却使用utf-8编码方式来解读这个二进制码,
- 可能解读出一些奇怪的字符(乱码)。
- 此时应调整windows控制台的输出编码格式为gbk
-
- C中,SetConsoleCP()调整windows控制台的输入编码格式,
-
SetConsoleOutputCP()函数用于调整windows控制台的输出编码格式
和你没完!
canci
ANSI是什么编码?
原来控制台还有编码方式啊?
看到当前代码页没有,结果是GBK编码!
没想到控制台还可以有这么多属性啊!
canci
每打开一个cmd都自动执行一个命令
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
- 只需要在注册表中右键新建一个字符串啥的巴巴!
- 然后每次新开一个cmd,你会发现都在D:盘啊哈哈哈!