jsp页面乱码终极

  1. 经常遇到关于JSP页面乱码的问题,在网上也查了相关的帖子,故在此做个关于JSP页面乱码处理的总结,和大家一同分享。   
  2. 首先先介绍几个关于页面编码参数设置的属性。   
  3.   
  4. <META http-equiv=Content-Type content="text/html; charset=gb2312">    
  5. 这句话的意思是你浏览器查看网页的编码方式为中文,类似于浏览器上查看选项的字符编码设置,如果你查看中文的页面,你设置为UTF8查看的话,就会显示为乱码或者说是问号。所以这个属性只是用来设置浏览器显示数据的字符编码。   
  6. 下面我们具体说一下这个属性   
  7. META,网页Html语言里Head区重要标签之一   
  8. HTTP-EQUIV类似于HTTP的头部协议,它回应给浏览器一些有用的信息,以帮助正确和精确地显示网页内容。常用的HTTP-EQUIV类型有:   
  9. Content-TypeContent-Language (显示字符集的设定)   
  10. 说明:设定页面使用的字符集,用以说明主页制作所使用的文字以及语言,浏览器会根据此来调用相应的字符集显示page内容。   
  11. <Meta http-equiv="Content-Type" Content="text/html; Charset=gb2312">  
  12. META标签定义了HTML页面所使用的字符集为GB2132,就是国标汉字码。如果将其中的“charset=GB2312”替换成“BIG5”,则该页面所用的字符集就是繁体中文Big5码。当你浏览一些国外的站点时,IE浏览器会提示你要正确显示该页面需要下载xx语支持。这个功能就是通过读取HTML页面META标签的Content-Type属性而得知需要使用哪种字符集显示该页面的。如果系统里没有装相应的字符集,则IE就提示下载。其他的语言也对应不同的charset,比如日文的字符集是“iso-2022-jp ”,韩文的是“ks_c_5601”Content-TypeContent还可以是:text/xml等文档类型   
  13. Charset选项:ISO-8859-1(英文)BIG5UTF-8SHIFT-JisEucKoi8-2us-ascii, x-mac-roman, iso-8859-2, x-mac-ce, iso-2022-jp, x-sjis, x-euc-jp,euc-kr, iso-2022-kr, gb2312, gb_2312-80, x-euc-tw, x-cns11643-1,x-cns11643-2等字符集;Content-LanguageContent还可以是:ENFR等语言代码。   
  14. Note:因为我们的浏览器一般都指定为中文字符编码查看,所以这句就不用加在你的页面当中,你加了也可以更强调也好。   
  15.   
  16. 2page contentType — 指定的是JSP页最终 Browser(客户端)所见到的网页内容的编码.其实用在容器中就是说把JSP页面输出为HTML页面采用的编码方式。要把这个与第一个属性有所区别。   
  17. 3page pageEncoding — 指定JSP解码时所用的编码   
  18. 如果你的是 WIN98,  ME NOTEPAD记事本编写JSP, 就一定是常用的是Big5  gb2312, 如果是用 WIN2k winXPNOTEPAD, SAVE时就可以选择不同的编,包括 ANSI(BIG5/GB2312) UTF-8  UNIONCODE(估是 UCS 16).   
  19. 因为 JSP要经过 两次的编码”,   
  20. 第一阶段会用 pageEncoding, 第二阶段会用 utf-8 utf-8, 第三阶段就是由TOMCAT出来的网页用的是contentType.   
  21. 阶段一是 JSPC JSPJAVA(.java)原码的翻译”, 它会跟据 pageEncoding 的设定读取JSP. 结果是由指定的pageEncoding(utf-8,Big5,gb2312)JSP 翻译成统一的utf-8 JAVA原码(.java). 如果pageEncoding设定错了或没设定(预设ISO8859-1), 出来的 在这个阶段 就已是中文乱码.   
  22. 阶段二是由 JAVACJAVA原码至JAVA BYTECODE的编译不论JSP的编写时是用(utf-8,Big5,gb2312),经过阶段一的结果全都是utf-8ENCODINGJAVA原码.   
  23. JAVAC utf-8ENCODING读取AVA原码编译成字符串是 utf-8 ENCODING的二进制码(.class). 这是 JAVA VIRTUAL MACNHINE对常数字符串在 二进制码(JAVA BYTECODE)内表达的规范.阶段三是TOMCAT(或其的application container)加载和执行阶段二得来的JAVA二进制码输出的结果也就是BROWSER(客户端))   
  24. 见到的这时一早隐藏在阶段一和二的参数contentType, 就发挥了功效. ( 阶段一的 ).   
  25. 4request.setCharacterEncoding("gb2312")指定对请求采用中文编码发送。浏览器默认的是采取UTF8编码方式发送请求,不能识别中文字符。   
  26. 5response.setContentType(”text/html; charset=gb2312″);设置响应时发送数据的编码方式。   
  27.   
  28. 总结了一大堆,现在来说下怎么解决JSP页面中文问题   
  29. 一般性的解决,只要在每个JSP页面开始处加入下面三行代码即可:   
  30.   
  31. 为了让JSP编译器能正确地解码我们的含有中文字符的JSP文件   
  32. <%@ page pageEncoding="gb2312"%>  
  33.   
  34. 保证JSP向客户端输出时是采用中文编码方式输出   
  35. <%@ page contentType="text/html;charset=GB2312"%>  
  36.   
  37. 为了让JSP能正确获得传入的参数   
  38. <%request.setCharacterEncoding("gb2312");%>  
  39.   
  40. 对于SERVLET只要在最前面加上这句即可:   
  41. 为了让JSP响应按照正确的编码格式   
  42. response.setContentType(”text/html; charset=gb2312″)  

 转载于 www.javaeye.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值