在开发中碰到使用ajax时,在action中获取中文的会乱码。有人就会在jsp中设置字符集为GBK,然后写过过滤器 告诉JVM以GBK字符集读数据。然后还不能解决问题,就在代码中转换字符集,怎么转码都没用,搞清楚了乱码原理,其实解决问题很简单的。
大家知道javascript中是以UTF-8编码的,虽然你页面设置了字符集是GBK,这个作用是让浏览器以GBK字符集读取数据。使用ajax时只要对你要发送的数据encodeURI 2次,然后再在action用调用java.net.URLDecoder.decode(str,"UTF-8");把他转成UTF-8,这样就OK了。