首页 / 技术 / 正文

数据库编码与网站编码格式的梳理

2014年12月02日 暂无评论 ... 技术

对于数据库或者是网页编辑的初学者来说,最经常遇到的问题就是明明编写好并且正确连接上了数据库,但是在网页上最终显示的缺失一堆乱码,或者明明编写的非常漂亮的网页,最后在浏览器上显示的却是一堆乱七八糟的符号。归根到底,出现这些问题的根本原因就是字符的编码没有选择正确。字符的编码尤为重要,而且最好能从本质上理解透了,否则每次编写网页的时候都要进行调试,特别麻烦。

 

要开始,首先就要了解几个基本的概念:字符集和字符编码

在计算机的储存信息中,字符集和编码可以这样理解,在计算机储存字符的时候,是二进制的方式存储的,对应的一个文字就有一个单独对应的1与0的组合顺序,这叫做“编码”,在计算机读取的时候,对这些0和1的组合进行读取,然后相应地显示出字符,这就是“解码”。

由于每个国家使用的语言不同,因此,出现了很多单独为某种语言编写的字符集和字符编码,比如说中国的汉字和汉语用的“GB2312”和“GBK”。这些编码针对性很强,因此只能显示本国语言,但是其他语言,比如说在GB2312编码的网页中有韩文字,就不能正确地显示出来。

由于互联网的普及,为了显示更多的字符,UTF-8编码出现了,它的编码内容包含了全部的计算机字符,除此之外,还有UTF-16和UTF-32,但是相比之下,使用UTF-8的更加普遍一些。

对于含有中国汉字的网页和数据库来讲,一般会选择使用“GB2312”“GBK”和“UTF-8”的编码方式来编码网页和数据库。但是这三者还是有区别的。

GB2312:这套编码字符集是中国国家标准总局在1980年发布的,内包含有6763个字符和682个图形字符。优点是这套编码字符集占用空间比较小,如果有储存大量汉字文献的话,使用GB2312会节省大量空间。但是缺点显而易见,对外语字符无法支持,需要注意的是:GB2312对于目前大量使用的表情字符是没有对于的编码的。

GBK:这是1995年发布的字符集,支持包含全部的中日韩的汉字,累计20902字。

UTF-8:UTF8包含了全部的计算机字符,但是在utf8下还有大量的子集,绝大多数是提供给其他小语种语言的utf8的子集编码,在实际使用的时候,一般选择 utf8 general ci 这是总集。

在网页编辑和数据库操作中,建议选择使用GBK或者是UTF-8,如果确保自己的产品上只会出现简体汉字,可以选择使用GB2312。

 

如果搞清楚了字符编码的问题,那么可以想到,显示出乱码来的原因就是解码和编码的方式没有统一起来,导致字符显示出现错误。所以需要做的就是,让所有的链接统一编码方式。

 

网页编码统一

网页编码的设置方式是在网页<head></head>之间添加

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

在最后的“charset=”设置网页使用的字符编码。

顺便一提,在HTML5中,申明编码的很简单:

<meta charset="UTF-8" />

 

在编写网页的时候,如果出现网页文件编码错误,可以使用IDE软件转换,比如使用notpad++,点击“格式”选择要转换的字符集。

notpad

 

数据库编码的统一

这里的数据库指的是MySQL

对于数据库的字段来讲,除了要设置好数据库类型,还要注意你选择字段的字符集和排序规则。字符集一定要设置跟网页的编码一致,有的时候在网页上存取和显示都没有问题的字符,在数据库后台显示的可能是乱码,虽然不影响正常使用网页功能,但是不便于管理。所以一定要正确设置好数据库的字符集和排序规则。

字段的字符集设置只需要设置有显示汉字的字段,其他如ID,确保一定是数字的,可以不用设置。

QQ图片20141202120809

 

数据库连接的统一

一般来讲,如果网页显示编码和数据库编码统一之后,就不会有显示上的问题了,如果再次出现问题,可以在数据库连接的位置上增加数据库编码校正语句:

$conn=@mysql_connect("localhost","root","");

mysql_query('SET NAMES utf8' ,$conn);

注意:这里的utf-8的输入方式是“utf8”没有横杠。

暂无评论

发布评论