Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
codeblock输出中文报错_如何把codeblocks汉化显示中文,希望能够帮助你!!!。
今天使用codeblock时,编译的时候发现codeblock终端输出的中文出现了乱码。
看到codeblock右下角提示 “为了防止数据丢失,该文件已经保存为UTF-8”,然后就出现了乱码。
在网上差了很多资料说:
乱码的原因是因为出现系统本地编码和codeblocks的编译器的解码方式是不一样的,是GBK编码方式和UTF-8编码方式的冲突问题。
一开始不是很明白,后来仔细地分析了一下。
有两种乱码:
如下:
cout<<"±à¼Æ÷£ºÉèÖÃΪÁËĬ"<<endl; cout<<"±àÒëÆ÷£ºÄ¬ÈÏ"<<endl; cout << "Hello world!" << endl;
这和编辑器的编码方式有关。
设置->编辑器->编码设置
我们发现这里有一个打开文件时,使用编码
,它就是我们保存和打开文件时使用的编码格式:
我们常用的有两种编码方式: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先进行编码格式检测,检测不到再使用我们定义的编码格式。按理说是没问题的,但是不知道为什么我的codeblock应该自动将文件识别为UTF-8编码,即使文件是GBK的。GBK的文件,使用UTF-8解析打开当然就会出现上面的乱码了。
注意:文件的编码格式和他保存时codeblock的编辑器设定的格式是一样的,而且保存后就不能对编码格式进行修改了。
终端输出乱码和编译器有关:
设置->编译器
这里就需要两个命令:
-finput-charset=charset -fexec-charset=charset
含义:
-finput-charset=charset指定编译器用什么编码解释输入源文件,它需要和源文件的编码格式一样,格式一样才可能编译;
如果格式不一样会报如下错误:
根本无法编译。
-finput-charset=charset的默认值是UTF-8;
-fexec-charset=charset是编译的时候以什么编码格式在终端输出.
-fexec-charset=charset默认情况下是UTF-8,但是windows不能识别,所以要修改为GBK,就不会出现乱码了。
综上所述,codeblock有两种设置编码的格式:
设置->编辑器->使用编码WINDOWS-936
设置->编译器->其他编译器设置
输入以下语句:
-finput-charset=GBK -fexec-charset=GBK
设置->编辑器->使用编码UTF-8
设置->编译器->其他编译器设置
输入以下语句:
-finput-charset=UTF-8 -fexec-charset=GBK
两种格式的文件最好用相应的编码格式打开:
即 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 文件就不会显示,当时吓坏我了
)
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章