首先看一下百度百科对于乱码的定义:
乱码,指的是由于本地计算机在用文本编辑器打开源文件时,使用了不相应字符集而造成部分或所有字符无法被阅读的一系列字符。造成其结果的原因是多种多样的。
简单来说就是编码方式不统一。
但乱码方式有很多,如果有准确对应的表格,就可以轻易找到乱码原因,从而解决乱码。
乱码原因对照表 以Java开发为例,笔者见过最多的乱码方式就是GBK与UTF-8之间的乱码。
我使用的开发工具是IDEA,建议导入项目之前就设置一下项目的编码方式。如下图所示:
使用的数据库也要设置好编码方式,按下图可设置为UTF-8。
建议统一使用utf-8的编码方式,就不会出现乱码问题了。
简单来说UTF-8和GBK的区别就是:
GBK: 专用于中文编码,双字节。
是在国家标准GB2312基础上扩容后兼容GB2312标准。
包含全部中文字符。
UTF-8: 国际通用的一种多字节编码,对英文使用8位(1个字节),中文使用24位(3个字节)来编码。
对于英文字符较多的论坛适用于UTF-8节省空间。
包含全世界所有国家需要用到的字符。
GBK和UTF-8文字编码的特点:
GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。
至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。
GBK和UTF-8文字编码的区别:
GBK包含全部中文字符;
UTF-8则包含全世界所有国家需要用到的字符。
GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准;(好像还不是国家标准)
UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。
比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。
所以,对于英文比较多的论坛 ,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。