struts2中关于jsp页面向action传值出现乱码问题

      下午在做一个小项目,又 出现了该死的乱码问题,不过这个问题以前倒是遇到过不止一次,闲着无聊,特整理出来:

  在JSP页面输入中文并传给后台的时候,常常会出现乱码问题,产生乱码的原因:java在进行传值的时候,默认用的是iso-8859-1的编码形式进行传输,而我们jsp页面常用的则是utf-8的编码形式。所以,两者不对应,在解析的时候就出现乱码现象。

  有以下几种解决方案:

一:在struts.xml文件中添加

  <constant value=”utf-8″></constant>

  注:这里value=”urt-8″指的是页面的编码格式,如果页面的编码格式是GBK,则写GBK

二:在Action中重新转码:利用.new String(name.getBytes(“iso-8859-1″),”utf-8”);

  例:this.name= new String(name.getBytes(“iso-8859-1″),”utf-8”);

  注:这里的name是从页面传过来的参数,香港虚拟主机,只要在这里重新转码就可以了,另外,这里的utf-8依然是页面的编码格式。

  但每次都这样转,太麻烦了,因此可以写一个工具类,将乱码转成utf-8

public class Tools{//提供一个方法,网站空间,将乱码转化成utf-8

public static String getNewString(String input){String result = “”;try{result = new String(input.getBytes(“iso-8859-1″),”utf-8”);}catch(Exception e){e.printStackTrace();}return result;}

在用的时候直接调用就行了:userName = Tools.getNewString(name);

三:就是在tomcat中修改server.xml, 个人不推荐这得方法,其一:不稳定,其二:在工作中修改服务器的配置文件不是一件容易的事情,所以这里就不举例说明。

四:CharacterEncodingFilter的使用,但这个东西不是万能的,但有时候没有它就会很麻烦,所以还是加上,以防万一,虚拟主机,但需要说明一点:这个filter只对post请求有效, get请求一律忽略。例:在web.xml中如下配置:

<!–字符编码–><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

好了,其实乱码是个头疼的问题, 但只要用心,总用找到解决办法的,以上几种办法虽然不是最好的 ,但对付一般的情况还是可以的,希望能够对你有用。另外,如果说的有不当之处,欢迎修正!

  

  

做事不怕难,自无难人事。

struts2中关于jsp页面向action传值出现乱码问题

相关文章:

你感兴趣的文章:

标签云: