跨平台C/C++代码编码问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daybreak222/article/details/80305137

不同平台的默认编码格式:

1. 中文版的Windows下使用VS进行C/C++的开发时,代码文本的默认编码格式为 GB2313,并且系统控制台的编码格式是GBK,GBK是包容GB2312的。于是使用VS在windows下进行开发不会出现什么问题。

查看文本的编码格式推荐使用Notepad++,也推荐把windows默认的笔记本替换掉,使用其打开txt文件。在notepad++中,可以在界面的最下方查看文件的编码方式,下图给出一个由VS默认设置生成的代码文本:


查看windows系统控制台的编码方式的方法是输入 chcp:


其中 936就是各种编码语言的的编号.

以下是几种常用的编码: 

936 GBK(一般情况下为默认编码) 

437 美国英语 

65001 utf-8

要想更改控制台的默认编码,不仅要通过chcp命令修改想要转换的编码,还要右键属性面板修改字体,比较麻烦,特别是不好在程序里写,所以不是必要的话,不推荐修改控制台的编码方式。

2 Ubuntu下的默认编码方式为UTF-8



平台编码格式与程序运行的关系:

当我们写了一个纯C/C++程序时,只有控制台/Terminal的编码方式和代码编码相同时,程序运行才能正确显示中文,不然中文的显示会成为乱码。特别是针对需要跨平台的程序,程序文本的编码问题就更加重要。

我在使用Qt Creator写代码时,Qt的默认编码格式为UTF-8(无论win平台还是linux平台)。所以,在windows平台下,使用qt最方便的做法就是把文件编码改为System,这样就能使程序在win下运行不乱码:

Qt的设置

针对已经创建好的项目,则需要在项目属性中修改:


当然,在Linux平台下就不需要修改了,Qt默认的就是UTF-8编码,和Linux的terminal能够完美契合。


修改代码文本编码的方式:

如果有一个在win下面能运行的程序,如果里面包含了中文,那么直接拿到Linux平台下肯定是不能正常打开的。这里需要把GB2312编码转换为UTF-8编码,对于文件数量比较少的时候,可以使用Notepad++进行转换:


然而当文件很多时,这样操作就极其麻烦,可以使用我下面附带的这个小程序进行批量修改代码文本的编码:

https://download.csdn.net/download/daybreak222/10412353

没有积分的搜索TextEncoding下载就好。

猜你喜欢

转载自blog.csdn.net/daybreak222/article/details/80305137
今日推荐