风暴俱乐部|Windows平台C语言程序在控制台显示中文乱码分析及解决( 三 )
环节四、控制台使用的字符编码
- 描述:控制台在显示所用的编码 。
- 默认:Windows平台控制台默认使用WINDOWS-936代码页(即GBK编码);Linux控制台默认使用UTF-8编码 。
- 编码设置:Windows平台可以通过注册表编辑器来指定控制台用什么编码显示输出执行文件 。
3.2.1 编译报错原因分析从上图可以很清晰的看出编译报错的原因是在环节一与环节二两处的编码不一致(如下)所引起的:
(一)上图中的1与4的组合(源文件保存为UTF-8编码 , 但GCC编译器对输入文件-源文件设置的是按GBK编码解析)
(二)上图中的2与3的组合(源文件保存为GBK编码 , 但GCC编译器对输入文件-源文件设置的是按UTF-8编码解析)
3.2.2 中文乱码原因分析从上图可以很清晰的看出中文乱码的原因是在环节三与环节四两处的编码不一致(如下)所引起的:
(一)上图中的5与8的组合(GCC编译器对输出执行文件设置的是UTF-8编码 , 但Windows控制台是GBK编码)
(二)上图中的6与7的组合(GCC编译器对输出执行文件设置的是GBK编码 , 但Windows控制台是UTF-8编码)
4. 解决方法
既然问题根源找到了 , 那么解决思路也就迎刃而解了(如下图示):
一、在环节一和环节二之间保持两者编码的一致性(1和3组合 , 或2和4组合)进而解决编译报错问题;
二、在环节三和环节四之间保持两者编码的一致性(5和7组合 , 或6和8组合)进而解决中文乱码问题 。
4.2 编译报错解决针对编译报错的两种情形(1和4组合、2和3组合)具体解决办法是:
4.2.1 方法一(1和3组合)修改源文件编码为UTF-8编码 , 以跟GCC编译器对输入文件-源文件默认UTF-8编码解析保持一致 。
修改源文件编码为UTF-8编码的具体步骤如下:
- Step1:通过执行Code::Blocks软件的菜单栏【设置】下的【编辑器】子菜单项 , 进入“编辑器配置”窗口 。
- Step2:点击左侧【常规设置】按钮(上图标号1处) , 继续点击右侧的【编码设置】选项卡(上图标号2处)
- Step3:在使用编码右侧的下拉框中选择【UTF-8】(上图标号3处)
- Step4:选中【设为默认的编码方式(忽略C::B的自动检测)】(上图标号4处)
- Step5:点击右下角的【确定】按钮 , 完成编辑器编码设置 。
- Step6:然后将编辑器内的源文件稍加修改重新保存(保险起见 , 可以重启 code::Blocks软件以确保源文件编码生效) 。
推荐阅读
- 龙之队|Windows10上触控板失灵的3种解决方案
- 虎扑足球|巴黎也是一样,莱昂纳多:任何俱乐部要签人都得先卖人
- M体育地带|青春风暴!意媒排出米兰U23首发阵容
- 魏翊东|罕见!京媒名嘴魏翊东怒怼国安俱乐部:瞻前顾后的,你在怕啥?
- 平地一声雷|你在怕啥?,罕见!京媒名嘴魏翊东怒怼国安俱乐部:瞻前顾后的
- 微软|硬盘满了别发愁,Windows 10小工具帮你轻松释放存储空间
- 国内赛事|最具眼光的俱乐部!IG.Y再次夺得夏季赛冠军 焕烽发文祝贺
- 维特尔维斯塔潘|青春风暴席卷F1意大利站领奖台 加斯利能跟随维特尔维斯塔潘的步伐吗?
- 操作系统|最漂亮的国产操作系统,实用性不输Windows,因收费99元被吐槽
- 青年|兰陵王:我打不过风暴龙王,凯:我勉强打得过。他:这不难很轻松
