在JSP文件中,我们会经常发现如下2个关于字符的代码:
contentType中的charset,还有就是JSP的pageEncoding。那charset与encoding怎么会有这2个名词呢?
答:charset全称是character set,中文名是字符集。
encoding全称是charset encoding,中文名称是字符集编码,简称编码。
那这2个名词之间有什么区别吗?
答:用JAVA语言来形容下吧,charset作用跟List似的,而encoding作用跟ArrayList、LinkedList似的。
UTF8与UTF16等等怎么会出现这么多?
答:一般情况下,一个charset对应一个encoding,比如我上文说到的GB2312,GB代表的就是国标即国家标准,这种就是一个charset接口,实现类也只有一个encoding。
而Unicode接口的实现类则有3个:UTF-8/UTF-16/UTF-32,这就比较麻烦了。因为Unicode当初在设计的时候就是为了统一所有的字符集,来包含各个国家不同民族的文字,后来随着时间发展,突然发现现有的编码方案不科学,而Unicode作为总接口也没必要再去创建另外一个新接口,没办法,只能去折腾实现方式了,因此才出现了上述UTF-8/UTF-16/UTF-32这几种encoding,从而打破了字符集与字符集编码一对一的惯例。