jsp中文传递到后台变成乱码

好久不见. 提交于 2020-01-23 13:13:00

一、对传递过来的参数进行编码转换

  key=new String(key.getBytes("ISO-8859-1"),"UTF-8");

其中ISO-8859-1是tomcat默认的编码类型

缺点:当服务器的编码改成GBK  该方法就会失去作用 当然改成

key=new String(key.getBytes("GBK"),"UTF-8");

二、修改服务器(tomcat的编码)

server.xml

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443"

URLEncoding=UTF8 />

 

缺点:当tomcat编码进行修改 又会出现问题

一、 二、共同的缺点就是依赖于Tomcat的编码环境

三、先将中文进行编码后再传递(推荐)

   1Js方式:

      需要进行两次编码

客户端

          Var key=encodeURI(”中中”);

                   Key= encodeURI(key);

服务器端

                   因为服务器端在获取客户端传递过来的参数时已经进行了一次解码 所以我们自己只需解一次码就行了

                   java.net.URLDecoder.decode(传过来的参数);

   2、利用Struts2<s:a>标签

<s:a action=””>

<s:param name="key" value="%{@java.net.URLEncoder@encode(key, 'utf-8')}"></s:param>

</s:a>

Sturst2默认不允许直接用OGNL表达式调用方法  所以需要在Struts.Xml加入

<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!