字符编码涉及到很多概念如ASCII、ISO-8859-1、Unicode、GBK、GB2312、UTF-8等,涉及到字符的传输(输入和输出)、显示与存储。
- ASCII码使用8位二进制数组合来表示256种可能的字符。标准ASCII码(又称基础ASCII码)使用7位二进制数来表示所有的大写和小写字母、数字0到9、标点符号以及在美式英语中使用的特殊控制字符,一共128个。不支持中文。
- ISO-8859-1属于单字节编码,最多能表示的字符范围是0-255,应用于英文系统,很明显,ISO-8859-1编码表示的字符范围很窄,无法表示中文字符。
- GB2312/GBK是汉字的国际码。专门用来表示汉字,是双字节编码,而英文字母和ISO-8859-1及ASCII一致(兼容)。其中GBK编码能够用来同时表示繁体字和简体字。而GB2312只能表示简体字,GBK是兼容GB2312的。
- unicode是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。所以可以说他是不兼容ISO-8859编码的。需要说明的是,定长编码便于计算机处理(GBK2312/GBK不是定长编码),而unicode又可以用来表示所有字符、所以在很多软件内部使用unicode编码来处理的,比如java。
- UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用来表示Unicode标准中的任何字符(兼容),且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部份修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或发送文字的应用中,优先采用的编码。
- 程序使用的编码和本机的编码不统一
- 在网络中,客户端和服务端编码不统一