java ice c_Java的Ice包接收中文乱码

这次在编写java版ems的时候,遇到中文接收乱码问题(环境,Python客户端,Java服务端)。刚好对编码问题没什么概念,硬着头皮乱搞一气,无果。当晚请到无线徐工前来帮忙,也是折腾了很久,大概知道是Ice.jar内部编码造成数据无法还原。测试如下:

public static void testZh() throws Exception{

String str = "中文"; //原字符

byte[] bys = str.getBytes("gbk");

String nstr = new String(bys, "utf8"); //被编译字符

System.out.println(nstr); //????

byte[] nbys = nstr.getBytes("utf8");

String rstr = new String(nbys, "gbk");

System.out.println(rstr); //锟斤拷锟斤拷

}

主要问题是在Ice.jar包中默认以UTF8编码,官方讨论区也有国人遇到此问题http://www.zeroc.com/forums/help-center/2878-ice-client-encoding-gbk-error.html,官中人强荐在传输中转码为utf8,我们这么多年的代码积累,岂能说迁就能迁,听国人意见,重新编译Ice.jar包。

grep -rl UTF ./|xargs replace 'UTF-8' 'ISO-8859-1' --

grep -rl UTF ./|xargs replace 'UTF8' 'ISO-8859-1' --

在编译中出现一些不自带的第三方包,但因版本众多,最后还是实验出了合适的版本(下载后把jar包加入到CLASSPATH中即可):

wget http://www.java2s.com/Code/JarDownload/jgoodies/jgoodies-forms-1.4.0.jar.zip

wget http://www.java2s.com/Code/JarDownload/jgoodies/jgoodies-looks-2.2.1.jar.zip

最后执行 ant -f build.xml就编译成功了。

鸣谢:徐阳

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值