用struts2很长时间了,一直没有出现过中文问题,昨天做个web小测试程序的时候表单提交在action中打印的中文都是乱码,真是搞不懂,我知道struts2出现中文乱码无非就是三个问题:页面,i18n拦截器设置,数据库都设置成UTF-8就行了,昨天检查了几遍都好着呢,action还是乱码。最后把form表单的method="get"改成了method="post"就不是乱码了,这是为什么呢?get和post在参数处理机制上还有什么区别呢?谢谢指教!

解决方案 »

  1.   

    get请求会把参数附加到请求的url后面
    而post请求会把参数附加到请求的body里面
    我们一般指定的编码都是针对body的。楼主看一下
    页面文件的编码,改一下看看
      

  2.   

    页面设为了UTF-8,struts2.i18n.encoding也是UTF-8但是method=get时action中打印是乱码而method=post却没有没有乱码,这是为什么?
      

  3.   

    get提交的话 url路径上就会把你参数传过去,就会把url上的中文转换成他自己的格式,在转化回来的时候就是乱码了,你还要获取的时候强制转换一下就Ok的
      

  4.   

    get 是通过url传递的,就是类似于 href格式传递的,它不受form提交的限制,传递过程中应用服务器会使用自己的编码形式,例如tomcat默认的就是ISO8859-1,所以有两种方法来解决:
    1、修改应用服务器的编码,和页面保持一致
    2、转码,new String(str.getBytes("ISO8859-1"),"utf-8");