[顶]治根又治本的方法可以解决中文问题

 

No.1
提交方式为 post的首先要把页面上的PageEncoding="UTF-8";
然后可以在servlet里头先设置request/response.setCharacterEncoding("UTF-8");
最后就是如果重新指定到别外一个页面,那么也要把要指定的那个页面设置PageEncoding="UTF-8"

//解决get提交方式的中文问题(1)//还原->>组装
 public String getCharset(String str)
 {
  String strfirst=null;
  byte[] charsetbyte=null;
  //还原
  try {
   charsetbyte=str.getBytes("ISO-8859-1");   //注意:默认进servlet的编码方式就是ISO-8859-1,而不是按照页面的编码格式
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  //重新组装
  try {
   strfirst=new String(charsetbyte,"utf-8");  //这个类型要与请求页面的编码一致
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return strfirst;
 }
 
 No.2
 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
 其中pageEncoding是设置本页的编码方式与其它页面、Servlet无关。

No.3
 如果页面要跳转的话;例如:
    request.getRequestDispatcher("/Userjsp/UpdatePwd.jsp").forward(request, response);
  response.sendRedirect("Userjsp/fail.jsp");
 这些跳转的话,提交的方式是post所以可以用过滤器来解决.
 if(this.encoding!=null)
  {
   request.setCharacterEncoding(encoding);
   response.setCharacterEncoding(encoding);
  }
  chain.doFilter(request, response);   //关键代码哇!!
 注意web.xml里的配置
  <filter>
   <filter-name>CharsetFilter</filter-name>
   <filter-class>com.weichen.filter.CharsetFilter</filter-class>
   <init-param>
    <param-name>encoding</param-name>
    <param-value>utf-8</param-value>
   </init-param>
  </filter>
  <filter-mapping>
   <filter-name>CharsetFilter</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值