一、contentType 与pageEncoding区别 
contentType -- 指定的是JSP页最终 Browser(客户端)所见到的网页内容的编码. 
就是 Mozilla的 Character encoding, 或者是 IE6的 encoding. 例如 JSPtw Forum 用的contentType就是 Big5. 

pageEncoding -- 指定JSP编写时所用的编码 
如果你的是 WIN98, 或 ME 的NOTEPAD记事本编写JSP, 就一定是常用的是Big5 或 gb2312, 如果是用 WIN2k winXP的NOTEPAD时, SAVE时就可以选择不同的编,码, 包括 ANSI(BIG5/GB2312)或 UTF-8 或 UNIONCODE(估是 UCS 16). 

editor的编码 就是控制pageencoding 编码的 

二、jsp编码过程 
JSP要经过 两次的"编码": 

第一阶段会用 pageEncoding 

第二阶段会用 utf-8 至utf-8 

第三阶段就是由TOMCAT出来的网页, 用的是contentType. 

阶段一 

   是 JSPC的 JSP至JAVA(.java)原码的"翻译", 它会跟据 pageEncoding 的设定读取JSP. 结果是 由指定的 pageEncoding(utf-8,Big5,gb2312)的JSP 翻译成统一的utf-8 JAVA原码(.java). 如果pageEncoding设定错了, 或没设定(预设 ISO8859-1), 出来的 在这个阶段 就已是中文乱码. 


阶段二
 

   是由 JAVAC的JAVA原码至JAVA BYTECODE的编译. 不论JSP的编写时是用(utf-8,Big5,gb2312),经过阶段一的结果全都是utf-8的ENCODING的JAVA原码. JAVAC用 utf-8的ENCODING读取AVA原码, 编译成字符串是 utf-8 ENCODING的二进制码(.class). 这是 JAVA VIRTUAL MACNHINE对常数字符串在 二进制码(JAVA BYTECODE)内表逹的规范. 

阶段三 

   是TOMCAT(或其的application container)加载和执行阶段二得来的JAVA二进制码, 输出的结果( 也就是BROWSER(客户端)) 
见到的. 这时一早隐藏在阶段一和二的参数contentType, 就发挥了功效. (见 阶段一的 ).response.setContentType("text/html; charset=utf-8"); 
出来的可以是 utf-8, Big5, gb2312, 看的就是JSP 的 contentType的设定. 

本文转载自http://ltc603.iteye.com/blog/130204