中文乱码解决方案

1.利用String[也是最常用的方式]

String username = new String(username.getBytes("ISO-8859-1"), "UTF-8"); //通过默认的编码获取到byte[],然后进行UTF-8再次编码  

2.在tomcat中的server.xml进行配置URIEncoding="UTF-8"

<Connector 
URIEncoding="UTF-8"
port="8080"
protocol="HTTP/1.1"   
connectionTimeout="20000" redirectPort="8443" />

3.使用JavaScript对传递的参数进行编码

额外阅读

 

Js编码的几种方式区别:

1.window.escape()与HttpUtility.UrlEncodeUnicode()编码格式一样:将一个汉字编码为%uxxxx格式
不会被window.escape编码的字符有:@ _ - . * / +  这与http://www.w3school.com.cn/js/jsref_escape.asp上的解释不符合

 

2.window.encodeURIComponent()[我推荐使用这种方式]与HttpUtility.UrlEncode()编码格式一样:将一个汉字编码为%xx%xx%xx的格式

不会被window.encodeURIComponent编码的字符有:'  (  )  *  -  . _   ! ~   这与http://www.w3school.com.cn/js/jsref_encodeURIComponent.asp解释相符合

不会被HttpUtility.UrlEncode编码的字符有:'  (  )  *  -  .  _  ! 相比较而言,HttpUtility.UrlEncode比window.encodeURIComponent多一个 ~ 编码

 

3.不会被window.encodeURI编码的字符有: -  _  .  !  * (  )  ;  /  ?  :  @  &  =  ,  #,与encodeURIComponent对比,发现encodeURI不对:;/?:@&=+,  #,与encodeURIComponent对比,发现encodeURI不对:;/?:@&=+,#这些用于分隔 URI 组件的标点符号进行编码
事例演示说明
JavaScript代码: window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext)); java后台处理代码: searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8"); /* 为什么要两次编码的原因:后台java代码给searchtext赋值的时候,本身已经使用了一次解码,不过解码的结果依然不对。
所以我们可以在页面上进行两次编码操作,这样后台自动的那次就可以抵消掉一次,
然后在使用searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");进行一次解码就好了。
【这种方式还是用的比较多的,我个人使用的比较少】 */

 

posted @ 2016-05-01 13:12  01源代码  阅读(369)  评论(0编辑  收藏  举报