下面总结一下这些常用编码的概念,很多初级程序员只知道这些是一种编码,但不知道真正的作用。

ASCLL:这种编码计算机专业的都学过,是一种英文编码规则,如果是英语系统用这种编码就够了。
单字节,最多能表达256种字符。
ISO8859-(1-15):它是对ASCLL编码的扩展 所以也是单字节的。ISO(国际标准组织)不把中文当回事,
很多小国家的文字都扩展了如:冰岛语之类的,就是不扩展中文。其实不是歧视,而已是那些国家的
文字都是由一串字母组成的,比较相似,编码规则一样。如果中文全部用拼音来表达的话,那就不用出现后面的中文编码了。

GB2312:中国人终于站起来了,我们自己也搞了一套编码规则。不过只有简体。采用双字节(具体原理百度一下这里就讲太多了)。
GBK:GB2312还是不够用,扩展一下吧。繁体也进来吧!一家人。
unicode:统一字符编码标准集,把上面所有的都包括进来。采用双字节,没办法,因为中文是双字节的,只能预留多点。
urt-8:中文就是麻烦,浪费了很多空间,英文用1个字节就可以了,就一定用2个字节。根据特点自己分配空间。有些字符还会出现三个字符。


系统中能所有显示的字符,都会根据系统字体集中的编码来解码现实,如何没有的话,就会出现乱码。
如:如果你的系统是英文系统,而英文系统里没有中文的编码的话,就会出现乱码。
重点来了:做WEB开发的话,必须知道,web容器,IE,POST/GET,java/C#或其他语言,JDBC,它们都是用什么编码的。
IE可以自由选择编码。
java/C#:unicode
web容器:ISO8859-1.
JDBC:ISO8859-1.
POST/GET:ISO8859-1,但可以在获取GET/POST传过来的数据之前,就先对request过来的数据进行转码。
当然也可以在服务器每次响应浏览器时,就设置好浏览器GET/POST过来的编码,response.setcontenttype("text/html;charset=GBK");
发开中经常会出现?乱码:unicode转其他编码时,如果没有对应的编码,就会出现?
而反过来其他编码转unicode,就会出现?0xfffd.