链接穿中文出现乱码

来源:互联网 发布:美容视频软件 编辑:程序博客网 时间:2024/04/29 21:57

解决方法:

1.。在tomcat的server.xml文件中设置URIEncoding="UTF-8"信息。如:
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" maxHttpHeaderSize="8192"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />

2.。用URLEncoder.encode(citytype,"utf-8")和URLDecoder.decode(citytype,"utf-8")对中文参数进行处理

3.。用new String(name.getBytes("ISO-8859-1"),"gbk"),其中编码要看服务器的编码来决定。。tomcat的是gbk。。当使用第三种这种办法。就要把第一种的添加的URIEncoding这种依赖容器编码那句话去掉。

 

同学的毕业设计出现JavaScript用encodeURIComponentt编码后无法再后台解码的问题。

原来他是这样写的:

window.self.location="searchbytext.action?searchtext="+encodeURIComponent(seartext);

java处理的代码为:

searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/

咋一看觉的没问题啊,一编一解的,应该可以了。但还是出现了乱码。

后来网搜资料,发现原来在对后台java程序里的searchtext赋值的时候,本身已经使用了一次解码,不过解码的结果依然不对。所以我们可以在页面上进行两次编码操作,这样后台自动的那次就可以抵消掉一次,然后在使用searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/进行一次解码就好了。

正确的代码:

JavaScript:

window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext));

java:

searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/

另外还有一种方法是JavaScript进行一次编码,后台java处理时换种想法就好了:

java代码:

String s = new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");

 

原创粉丝点击