Skip to content

github编码问题简述

JustHermit edited this page Sep 23, 2013 · 1 revision

大家好,我是计三的郭子豪,这篇文章讲的是编码问题,这个问题本来是我在用github这种高端大气上档次的东西同步cpp文件的时候发现的,和俸哥交流了后他让我写一篇文章出来详细说下这个问题。我是个新手啊,如有错误欢迎各位大神指正。 不知道大家有没有碰到一个问题,就是如果你在你的c++程序中输出的时候用到了中文,那么当你同步到github上面的时候,中文部分会出现乱码。如下图所示:

但英文部分都是完好无损的。 这个问题的出现就是由于编码的问题。什么是编码呢,那我们首先还是要说到字符集,网上的定义是: 字符集(Charset):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。 字符编码(Character Encoding):是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对。 字符集我们都比较熟悉,比方说ASCII字符集,我们的C语言书后面附录了的。除此之外,目前比较常用的是UNICODE,简体中文字符集GB编码,繁体中文字符集BIG5等等。而编码就是一种对应关系,因为计算机的存储数据都是二进制的数,我们要把这些数据转化成信息,就要在输入数据时进行编码,在输出数据的时候按照同样的规则解码。所以,我们可以看到,相同的规则这一点是非常重要的,如果输入数据用一套标准,输出用另一套,那么自然会出现乱码了。 举个例子,现在国际上最常用的编码是utf-8,github的编码用的就是utf-8。这是github网页的源代码:

看到没有,它用的的确是utf-8。 而编码多如牛毛,如utf-16,utf-32,gbk等等。而在我们的编译软件上,简体中文的输入输出用的是gbk,以codeblock为例,它用的编码就是gbk,截图如下:

选择setting—>editor,出现一个窗口:

选择other settings,我们就可以看到第一行中软件选择的是windows-936,也就是GBK编码方式,我们用这种方式写出代码,交到用utf-8的github上面,中文部分自然会变成乱码,但英文部分没事,没事的地方在于GBK和utf-8对于英文字母的编码方式都是一致的。 那怎么解决这个问题呢,很简单,修改编译软件的编码方式就可以了。如果你的编译软件没有这种功能,比方说dev C++。那么推荐一款文本编辑器Notepad++。它可以打开cpp文件,然后在这个文本编辑器里修改编码就可以了。如果编码改成了utf-8的话,乱码问题就解决了。如下图:

此外,我们在网页上可以看到这样一行代码,以我写的php程序为例

这是在网页上面,数据库在储存数据的时候也有同样的问题:

这里如果用的是

那么数据存入数据库后,在数据库中我们看到的就会是乱码。 来看实例:

这是在网页显示的,数据库中则是这样的

如果我们把编码改成

重新进行一次操作

Content的内容全部变成乱码了,再看数据库中

也是同样的。

综上所述,编码问题在我们传递信息的时候是非常重要的,一定要保证一致性。

感谢观看。