IE下get传中文乱码的问题完美解决方案

时间:2022-12-27 06:38:28

前几天做项目的时候遇到需要在easyui的combobox的url中以get的方式传中文,出现乱码。

$('#cc').combobox({
  url : 'xxxAction.action?para='+中文,
  editable : false,
  valueField : 'cityId',
  textField : 'cityName'
});

到网上寻求解决方案。但基本就是那几种解决方案。

1.在Tomcat的server.xml文件Connector标签中加入URIEncoding= "UTF-8"。

2.在web.xml中加入spring处理中文的

<filter>
<filter-name>encodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

3.用Java处理String乱码问题,String str= new String(req.getParameter("str").toString().getBytes("iso8859_1"), "UTF-8");

4.新建个过滤器。

以上4种方法我都试过,firefox和Chrome,都已经解决了,但是IE下死活就是不好使,乱码依然存在。

这时我第一个办法是,如果get不行,就改成post吧,只好改写combobox的方式,用combobox的loader功能。

$('#cc').combobox({
loader : function(param,success,error){
$.post(
"xxxAction.action",
{ provinceId: provinceId },
function(data){
success(data);
},
"json"
);
},
  editable : false,
  valueField : 'cityId',
  textField : 'cityName'
});

后来跟同事一起讨论的时候,一位同事又给了我另一种解决方案,使用encodeURI

var url = encodeURI('xxxAction.action?para='+中文);
$('#cc').combobox({
url : url,
editable : false,
valueField : 'cityId',
textField : 'cityName'
});

还是第二种方式更简单,使用更灵活。