pogx原创:转载请声明出处
可以说乱码这个问题是一个非常令人头痛的问题,如果一个程序员没有因为乱码而为难过,那么我相信这个程序员的经历确实太平淡了。
首先弄清楚几个概念
1.编码(动词):把明文的字符序列转换成计算机理解的二进制序列称为编码
2.解码:把二进制序列转换成普通人能看懂的明文字符串称为解码
3.字符集:顾名思义,字符集就是字符的集合。我们通常说某某字符集,比如ACSII,UTF-8等,其实就是把字符和 二 进制序列一一对应。
然后我们来分析下导致乱码的原因是什么?我们应该怎么处理呢?
首先我还要讲一个概念,文件
文件是数据的载体,计算机把数据从磁盘中的文件中读入内存,是通过对文件进行读写。一般是以流的方式进行读写,文件在这里就像一个能装东西的盒子,我们插根管子就能读取东西,至于文件在磁盘中是如何存放的,我们不用关心。有时候我们会说某个文件是文本文件,某个文件是图片文件,某个文件是pdf文件等等啦。
其实对于计算机来说,无论什么文件里面都是二进制序列。当我们以图片的规则打开一个图片文件,此时就能把存放在磁盘中的二进制序列转化为图片的形式,这个过程就是一个解码的过程。如果你的解码规则不符合,那就会导致乱码。比如你用一个文本编辑器去打开一个图片文件,结果肯定是乱码的形式。因为你用文本的编码规则打开图片的二进制序列,文件编辑器按照文本的规则去翻译二进制序列,肯定是翻译不通的。就好像你用英语的语法规则去把某个文章翻译成日语,结果肯定对不上号。这就是导致乱码的原因。
讲到这里大家应该能够知道怎么解决乱码了吧。
好,我还是来总结一下吧
首先要解决乱码,最根本的一点就是,文件或数据的编码规则和解码规则一定要相同。
下面附上我解决数据库中文乱码问题的笔记
1, 首先我们eclipse中java文件应该统一保存为utf-8编码,以防止乱码出现
2, 数据字符集比较多,分为如上图描述几种,我们应该把其全部统一为utf-8编码
这时就需要在mysql数据配置文件—my.ini中配置默认编码
最后说一句,如果你不懂,或者你嫌麻烦,那你就把所有能设置的编码全部统一,一般我们统一为UTF-8