目录

  • 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;

这和编辑器的编码方式有关。
设置->编辑器->编码设置

我们发现这里有一个打开文件时,使用编码,它就是我们保存和打开文件时使用的编码格式:
我们常用的有两种编码方式: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,就不会出现乱码了。

3.总结

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

(1)GBK-GBK-GBK

设置->编辑器->使用编码WINDOWS-936

设置->编译器->其他编译器设置
输入以下语句:

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

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

设置->编辑器->使用编码UTF-8

设置->编译器->其他编译器设置
输入以下语句:

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

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 文件就不会显示,当时吓坏我了
)

codeblock输出中文乱码问题相关推荐

  1. PHP输出中文乱码的解决方法

    PHP输出中文乱码的解决方法 参考文章: (1)PHP输出中文乱码的解决方法 (2)https://www.cnblogs.com/cyun/p/4146131.html 备忘一下.

  2. 解决Vs输出中文乱码的问题

    解决Vs输出中文乱码的问题 原文:https://blog.csdn.net/c_khalid/article/details/51515675 源程序的运行结果是:中文乱码 首先,这个与VS本身无关 ...

  3. jquery PHP 中文乱码,PHP输出中文乱码怎么解决?

    在建立网站的时候我们会发现,php页面输出乱码,php输出数据库字段也乱码,这要怎么解决?下面本篇文章就来给大家介绍一下解决php输出中文乱码的方法,希望对你们有所帮助. 第一种.HTML和PHP混合 ...

  4. qt5.13.2输出中文乱码

    qt5使用qDebug()输出中文乱码,可以在.pro文件中添加以下的代码: #解决中文编译没法通过,输出中文乱码 msvc {QMAKE_CFLAGS += /utf-8QMAKE_CXXFLAGS ...

  5. asp.net core输出中文乱码的问题

    原文:asp.net core输出中文乱码的问题 摘要 在学习asp.net core的时候,尝试在控制台,或者页面上输出中文,会出现乱码的问题. 问题重现 新建控制台和站点 public class ...

  6. Servlet 输出中文乱码的新收获(1)

    又碰到servlet 输出中文乱码的问题,恼火.研究了一下,有了新的发现和认识. 原始代码: java 代码 protected void doGet(HttpServletRequest reque ...

  7. VScode输出中文乱码的解决方法------测试过可以用

    VScode输出中文乱码的解决方法------测试过可以用 参考文章: (1)VScode输出中文乱码的解决方法------测试过可以用 (2)https://www.cnblogs.com/shou ...

  8. php打印出来乱码_PHP输出中文乱码怎么解决?

    在建立网站的时候我们会发现,php页面输出乱码,php输出数据库字段也乱码,这要怎么解决?下面本篇文章就来给大家介绍一下解决php输出中文乱码的方法,希望对你们有所帮助. 第一种.HTML和PHP混合 ...

  9. 彻底解决IDEA输出中文乱码问题

    本文一共有3种方法,针对的情况是输出中文乱码问题 问题描述 无法正确输出中文字符:(请正确分辨自己是哪一种乱码问题!) 解决方法 1.最容易想到 File -> Settings -> F ...

  10. PHP输出中文乱码的解决方法(适合初学者)

    PHP输出中文乱码的解决方法 为什么会出现中文乱码? 一般来说,乱码的出现有2种原因,一种是由于编码(charset) 设置错误,导致浏览器以错误的编码来解析,从而出现了乱码,第二种就是文件被以错误的 ...

最新文章

  1. Java8中一个极其强悍的新特性,很多人没用过(非常实用)
  2. 【Python】青少年蓝桥杯_每日一题_12.03_输出字符串的长度
  3. 使用 Azure Container Registry 储存镜像
  4. django-模板注释
  5. python函数myproduct_OpenERP与Python 元编程
  6. PHP获取数组中重复数据
  7. 研究生文献笔记(obsidian模板分享!!):zotero+bookxnote pro+obsidian
  8. sublime下编辑LaTeX
  9. [RK3288][Android5.1] 调试笔记 --- LVDS+EDP双屏机器调节白平衡色温
  10. linux安装wine
  11. 斯皮尔 皮尔森 肯德尔_在SPSS软件相关分析中,pearson(皮尔逊), kendall(肯德尔) 和spearman(斯伯曼/斯皮尔曼)三种相关分析方法有什么异同(转)...
  12. linux查看pv数据量,linux下计算网站PV量、UV量
  13. 简:webservice服务端及客户端开发
  14. 高性能服务器设计[转自腾讯km,由qzhang同学翻译]
  15. 阿里终于杀进5G了!“新基建”赛道谁更胜一筹
  16. ISP IAP 详解与ISP IAP的实现
  17. N5105 软路由安装 ESXi 7 直通核显给 Debian / Ubuntu 虚拟机通过 Docker 实现 jellyfin 硬件转码视频文件(硬解/编码)
  18. 错误收集:备忘MPI Application rank 0 exited before MPI_Finalize()nbsp
  19. 设计一个时间片轮转法调度的算法
  20. Scrap入门之基础命令

热门文章

  1. 计算机汉字录入及信息表示,2010年青岛市初中8年级信息技术会考考试知识点说明...
  2. 电子邮件收发的原理和相关协议
  3. Report Machine 的问题 补充!!!
  4. 计算机电源高频干扰,开关电源中电磁干扰的透彻分析及其解决办法
  5. 局域网聊天程序 java MySQL_局域网聊天软件设计与实现(Linux,C++,MySQL)
  6. unigui发布_unigui+fastReport实现web打印方案
  7. 云播 Android,云播放(Air Playit)android版
  8. 计算机的ie丢失,告诉你win7内的IE给卸载了怎么找回
  9. linux学习--体验免安装版本的linux
  10. (七)OpenCV | 色度图