我在jsp的page中使用
<%@ page language="java" pageEncoding="UTF-8"
contentType="text/html; charset=BIG5"%>
发现contentType中的charset(这里是BIG5)对应的是response.setCharacterEncoding,应该是针对服务器响应进行编码.也就是说,对java二进制码展现给客户而进行的编码.
我看到网上的材料是这样说的.
按照他们的说法,pageEncoding是将jsp转换为java文件时用的编码,然后java文件转换为'java二进制码(也就是.class文件)统一用utf-8.
然后上面的contentType中的编码(也就是BIG5)是.class文件展现给客户用的编码.
那我的疑问来了
1.response.setCharacterEncoding是不是.class文件展示在浏览器中用的编码?
2.为什么pageEncoding为utf-8,而contentType中的 charset=BIG5的时候,浏览器大部分能正常显示,更奇怪的是 contentType中的charset=gbk,GB18030,GB2312的时候,除了少部分的'-'(横杠)不能正常,其他都正常?
utf-8编码怎么能和中文编码那么多都兼容, 他们的编码应该是不一样的哈,不是么?
谢谢.
------解决思路----------------------
1、对服务器响应时将进行重新的编码,是展示时的编码
2、UTF8是国际编码,很大程度上解决了通用性问题。不过依然会有兼容问题
gbk,GB18030,GB2312这几个是不断扩展的
GB2312应该最老,收录的字也最少。对繁体不好用
gbk算是升级版兼容GB2312,收录汉字算是很全的。
GB18030查了下资料,收录了少数名族语言等,使得gbk更加丰富。是32位字符集
这个讲的很全面:http://www.zhihu.com/question/19677619