风暴俱乐部|Windows平台C语言程序在控制台显示中文乱码分析及解决( 四 )

4.2.2 方法二(2和4组合)修改源文件编码为GBK编码 , 将GCC编译器对输入文件-源文件设置为是按GBK编码解析 。
一、修改源文件编码为GBK编码的具体步骤
与上面类似(在下拉框中把UTF-8改为WINDOWS-936即可) 。
风暴俱乐部|Windows平台C语言程序在控制台显示中文乱码分析及解决修改源文件编码为GBK编码
二、修改编译器对输入源文件的解析编码为GBK编码的具体步骤如下:
风暴俱乐部|Windows平台C语言程序在控制台显示中文乱码分析及解决修改编译器输入编码设置

  • Step1:通过执行Code::Blocks软件的菜单栏【设置】下的【编译器】子菜单项 , 进入“编译器设置”窗口 。
  • Step2:点击左侧【全局编译器设置】按钮(上图标号1处) , 继续点击右侧的【编译器设置】选项卡(上图标号2处
  • Step3:再继续点击下方的【其他编译器设置】选项卡(上图标号3处
  • Step4:在下面的文本框中直接输入-finput-charset=GBK(上图标号4处
  • Step5:点击右下角的【确定】按钮 , 完成编译器输入编码设置 。

验证:经过前面两种方法的设置 , 完成编码一致性后 , 再次进行编译 , 就已经可以成功通过了(如下图示) 。
风暴俱乐部|Windows平台C语言程序在控制台显示中文乱码分析及解决编译成功但显示乱码
但是你会发现程序运行在控制台时显示中文乱码了 。
此时再回想一下:源文件编码(GBK)+ 编译器输入设置编码(GBK) = 编译通过 。 但因为GCC编译器默认输出执行文件编码为UTF-8编码 , 同时Windows控制台默认是GBK编码 , 所以此时程序运行在控制台显示中文乱码逻辑上是正常的 。
4.3 中文乱码解决针对中文乱码的两种情形(5和8组合、6和7组合)具体解决办法是:
4.3.1 解决方法一(6和8组合)设置GCC编译器对输出执行文件是GBK编码 , 跟Windows控制台默认GBK编码保持一致 。
修改编译器对输出执行文件编码为GBK编码的具体步骤如下:
风暴俱乐部|Windows平台C语言程序在控制台显示中文乱码分析及解决修改编译器输出编码设置
  • Step1:通过执行Code::Blocks软件的菜单栏【设置】下的【编译器】子菜单项 , 进入“编译器设置”窗口 。
  • Step2:点击左侧【全局编译器设置】按钮(上图标号1处) , 继续点击右侧的【编译器设置】选项卡(上图标号2处
  • Step3:再继续点击下方的【其他编译器设置】选项卡(上图标号3处
  • Step4:在下面的文本框中直接输入-fexec-charset=GBK(上图标号4处
  • Step5:点击右下角的【确定】按钮 , 完成编译器输出编码设置 。

4.3.2 解决方法二(5和7组合)修改Windows控制台编码为UTF-8编码 , 以跟GCC编译器对输出执行文件默认UTF-8编码保持一致 。
修改Windows控制台编码为UTF-8编码的具体步骤如下:
  • Step1:通过快捷键Win+R , 弹出的【运行】窗口中 , 执行regedit命令 , 然后点击【确定】按钮打开“注册表编辑器”窗口 。

风暴俱乐部|Windows平台C语言程序在控制台显示中文乱码分析及解决运行regedit命令


推荐阅读