ASCII(ISO-8859-1)是鼻祖,最简单的方式,字节高位为0
GB2312、GBK、GB18030,这几个是中文编码方式,并向下兼容。GB2312包含7000多个汉字和字符,GBK包含21000多个,GB18030更厉害,到了27000多个。他们都是用2个字节来表示一个汉字。跟ascii是怎么区分的呢?如果高字节的高位为1(也就是高字节大于127),就表示是汉字,低字节并无明显特征。
Unicode是统一编码,它建立了一个全世界统一的码表。世界上的所有文字,在这张码表中都是唯一的。
UTF-8是Unicode的一种存储、传输方式。它将整个Unicode码表分为3部分。
0000 - 007F 这部分是最初的ascii部分,按原始的存储方式,即0xxxxxxx。
0080 - 07FF 这部分存储为110xxxxx 10xxxxxx
0800 - FFFF 这部分存储为1110xxxx 10xxxxxx 10xxxxxx
因此,一个汉字究竟被存储为什么,就需要:先查unicode码表,然后根据在码表的位置进行计算。例如:“电”字,在码表中是3575,计算成utf8就是E794B5,而在GB2312的码表中为B5E7
UTF-8的好处:兼容ASCII,存储英文文件都是单字节,文件小。当然,当以存中文为主时就变成了3字节编码了,比GB系列还大!如何标明一个文件是utf8格式呢?这个标记是可选的:EF BB BF。比如,用windows自带的记事本创建一个utf8格式的文件,就会加上这个标记。但是,如果用ultraedit创建utf8文件,并不会加上这个标记。这个标记有个术语,叫做BOM(Byte Order Mark)。不带BOM的utf8文件和GB2312文件怎么区分呢?我也不知道。唯一能想到的办法就是:先用一种试,如果出现乱码,就用另一种再试
UTF-16是双字节存储,这就带来一个问题,即高低字节的顺序。两个字节有两种顺序,它们也用BOM来标明。分为大尾码和小尾码两种。大尾码的BOM是FEFF,小尾码的BOM是FFFE
所以我觉得还是GBK好些,如果你是中文站的话