codeblock输出中文报错_如何把codeblocks汉化显示中文

(1) 2024-08-01 19:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
codeblock输出中文报错_如何把codeblocks汉化显示中文,希望能够帮助你!!!。

目录

  • 1. 问题
  • 2.分析原因
    • 文件打开就是乱码
    • 终端输出乱码
  • 3.总结
    • (1)GBK-GBK-GBK
    • (2)UTF-8 - UTF-8 - GBK
  • 4.注意

1. 问题

今天使用codeblock时,编译的时候发现codeblock终端输出的中文出现了乱码。
看到codeblock右下角提示 “为了防止数据丢失,该文件已经保存为UTF-8”,然后就出现了乱码。

2.分析原因

在网上差了很多资料说:
乱码的原因是因为出现系统本地编码和codeblocks的编译器的解码方式是不一样的,是GBK编码方式和UTF-8编码方式的冲突问题。
一开始不是很明白,后来仔细地分析了一下。

有两种乱码:

  • 文件打开就是乱码
  • 终端输出乱码

文件打开就是乱码

如下:

 cout<<"±à¼­Æ÷£ºÉèÖÃΪÁËĬ"<<endl; cout<<"±àÒëÆ÷£ºÄ¬ÈÏ"<<endl; cout << "Hello world!" << endl; 

这和编辑器的编码方式有关。
设置->编辑器->编码设置
codeblock输出中文报错_如何把codeblocks汉化显示中文_https://bianchenghao6.com/blog__第1张
我们发现这里有一个打开文件时,使用编码,它就是我们保存和打开文件时使用的编码格式:
我们常用的有两种编码方式:UTF-8 和 GBK
WINDOWS-936代表的是GBK编码格式,GBK是windows使用的编码格式;
UTF-8是codeblock默认的编码格式,UTF-8是Linux的编码格式。

题外话:
正是由于这两种格式的冲突在mingGW中提供了一套Windows下的基于GCC 程序开发环境,即在Windows平台上模拟了Linux下GCC的开发环境。

回归正题,windows系统下我们还是更常用WINDOWS-936编码格式,但是需要注意的是“使用此编码”一定要选择“设为默认的编码方式”,这样的话你保存和打开的文件编码格式就是一样的啦,打开文件就不会出现了乱码了。当然选择UTF-8也是可以的,就是后面的编译的编码方式也需要调整。
codeblock输出中文报错_如何把codeblocks汉化显示中文_https://bianchenghao6.com/blog__第2张

我之前选择的是“作为备用编码”,这压根就会导致codeblock先进行编码格式检测,检测不到再使用我们定义的编码格式。按理说是没问题的,但是不知道为什么我的codeblock应该自动将文件识别为UTF-8编码,即使文件是GBK的。GBK的文件,使用UTF-8解析打开当然就会出现上面的乱码了。

注意:文件的编码格式和他保存时codeblock的编辑器设定的格式是一样的,而且保存后就不能对编码格式进行修改了。

终端输出乱码

终端输出乱码和编译器有关:
设置->编译器
codeblock输出中文报错_如何把codeblocks汉化显示中文_https://bianchenghao6.com/blog__第3张
这里就需要两个命令:

-finput-charset=charset -fexec-charset=charset 

含义:

-finput-charset=charset指定编译器用什么编码解释输入源文件,它需要和源文件的编码格式一样,格式一样才可能编译;
如果格式不一样会报如下错误:
codeblock输出中文报错_如何把codeblocks汉化显示中文_https://bianchenghao6.com/blog__第4张
根本无法编译。
-finput-charset=charset的默认值是UTF-8;

-fexec-charset=charset是编译的时候以什么编码格式在终端输出.
-fexec-charset=charset默认情况下是UTF-8,但是windows不能识别,所以要修改为GBK,就不会出现乱码了。

3.总结

综上所述,codeblock有两种设置编码的格式:

(1)GBK-GBK-GBK

设置->编辑器->使用编码WINDOWS-936
codeblock输出中文报错_如何把codeblocks汉化显示中文_https://bianchenghao6.com/blog__第5张
设置->编译器->其他编译器设置
输入以下语句:

-finput-charset=GBK -fexec-charset=GBK 

codeblock输出中文报错_如何把codeblocks汉化显示中文_https://bianchenghao6.com/blog__第6张

(2)UTF-8 - UTF-8 - GBK

设置->编辑器->使用编码UTF-8
codeblock输出中文报错_如何把codeblocks汉化显示中文_https://bianchenghao6.com/blog__第7张
设置->编译器->其他编译器设置
输入以下语句:

-finput-charset=UTF-8 -fexec-charset=GBK 

codeblock输出中文报错_如何把codeblocks汉化显示中文_https://bianchenghao6.com/blog__第8张

4.注意

两种格式的文件最好用相应的编码格式打开:
即 UTF-8 - UTF-8 - GBK 创建的文件就还用UTF-8 - UTF-8 - GBK配置打开,
GBK-GBK-GBK 创建的文件就还用GBK-GBK-GBK 配置打开。
否则可能会出现文件找不到,代码消失 的问题。

(我发现我的codeblock:
UTF-8 - UTF-8 - GBK 配置打开 GBK-GBK-GBK 文件没问题,可以显示代码内容;
GBK-GBK-GBK 配置打开UTF-8 - UTF-8 - GBK 文件就不会显示,当时吓坏我了
)

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复