Tomcat JSP Web 开发中的乱码问题小结


1. 静态页面的乱码问题
     文件的编码和浏览器要显示的编码不一致。
     1)  检查文件原始的编码,  可以用记事本打开,  然后选择另存为来看;
     2)  给当前页面加入一个指令来建议浏览器用指定的编码来显示文件字符内容.
     <meta http-equiv="content-type"  content="text/html; charset=GBK">

     3)  如果系统是英文 XP,没装东亚字符集支持,  也会显示乱码. 


2. JSP 页面的乱码问题
     1)  page  指令有个 pageEncoding="GBK"  这个会指定当前页面保存的编码,  如果写成
ISO8859-1 就不能保存汉字;
     2)  page  指令的 contentType="text/html; charset=ISO8859-1"  也会像静态页面一样让
浏览器来优先选择一种编码.
     如果JSP 乱码的话, 一般就显示成?,而且不管你给浏览器选什么样的编码,它都不能正

确显示


3. 表单提交的乱码问题(Tomcat  特有)
     1). POST  的乱码
         a.  首先浏览器提交表单的编码是根据表单所在页面来决定的,  而不是根据提交后的
JSP 页面的编码来决定的.  把所有的页面的编码都设置成一样的, 例如 GBK.  
         b.  处理方式就是在获取参数之前设置编码:
         request.setCharacterEncoding("GBK");   
         c.  可以用过滤器的方式来解决, Tomcat 已经带了一个现成的:
         apache-tomcat-5.5.23\webapps\js p-examples\WEB-INF\classe s\filters\SetCharacter
EncodingFilter.java
         web.xml
             <filter>
         <filter-name>Set Character Encoding</filter-name>
         <filter-class>filters.SetCharacterEncodingFilter</filter-class>
         <init-param>
             <param-name>encoding</param-name>
             <param-value>GBK</param-value>
         </init-param>
     </filter>   
         <filter-mapping>
         <filter-name>Set Character Encoding</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>
     2) GET  方式的乱码
     用 setCharacterEncoding()  不能解决. TOMCAT  的一个BUG, GET  方式传送的表单参
数总是用的 ISO8859-1  编码.  我们要把它转成 GBK  方式.
     String username = request.getParameter("username");
System.out.println(username);
//  转码,  先取得原始的二进制字节数组
byte[] data = username.ge tBytes("ISO8859-1");
//  根据新的字符集再构造新的字符串
username = new String(data, "GBK");   
小结:
所有的页面(除了最后的 GET  的乱码问题)都用统一的编码(GBK 或者UTF-8),  就不会出现

乱码问题. 


4. 用过滤器来一次编码彻底解决表单参数的乱码问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值