Struts2 json插件中文乱码的处理

其二,还是乱码。。。

关于struts2 ajax  

max老大在他的blog里给出一个json插件的例子(

http://www.blogjava.net/max/archive/2007/06/12/123682.html

),例子中参数皆为英文,实现起来没有问题,套用上述例子,传输回来参数有中文字符出现以下问题:

1.

json无返回数据

原因:ajax要求utf-8格式编码,我的系统为gbk编码,

解决办法:对中文实施转码(sResult 为json返回数据),

String s = "中文";

String sResult = new String( s.getBytes("UTF-8") );

2.

用1中方法转码后,json返回数据,但是出现:中文字符串奇数时最后一字乱码,偶数时正常;

首先判断是上述转码方式的问题,写了测试程序,确实是这的问题;

3

网上有达人自行写gbk转utf-8的类,我偷懒拿了过来,使用起编码后,发现编码格式并未改变,只好另寻他法

4.

找到一篇帖子: Apache Commons-IO 项目中提供的实用工具来编写代码。

String utf8String = IOUtils.toString(IOUtils.toInputStream(gbkString, "UTF-8"));

,参照其说明:

向lib导入commons-io-1.3.1.jar,使用上述语句转码,打印查看,奇数时中文最后一字乱码倒是没有了,但是中间字符有了乱码。

接着查看json获得数据,发现还是奇数时中文最后一字乱码,怀疑是json插件中解码也有问题。。。

5.

这时想到了另一篇帖子,在java里使用java.net.URLEncoder.encode编码

js中使用shtml += decodeURI(data.shtml) ;解码

尝试:

String s = "<ab cd中文";

String sResult = java.net.URLEncoder.encode( s, "utf-8");

发现js 中decodeURI解码 中文没有问题,但是空格,某些特殊字符解码不对,想了想,决定分开,英文不在encode,中文encode,如下:

String sResult = "";

String s = "<ab cd" ;

sResult += s ;

s = "中文";

sResult += java.net.URLEncoder.encode( s, "utf-8");

测试后,问题解决。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值