unix下 用jxl导出excel时汉字乱码问题的解决

公司要做一个txt2xls的小程序,连界面都不需要,我用jxl写了不到100行代码搞定。
但是我的环境是windwos的,而同事到山东出差,运行环境是unix(IBM AIX)的,程序就出了问题,在win下怎么折腾都好使,而在unix下怎么折腾都是乱码。
我先上网查了下,有的说jxl在jdk1.42_x的部分jvm上会出现编码问题,建议换jdk;
有的说这样解决:

WorkbookSettings workbookSettings = new WorkbookSettings();
workbookSettings.setEncoding("ISO-8859-1"); //解决中文乱码,或GBK
Workbook rwb = Workbook.getWorkbook(is, workbookSettings);

还有的说这样解决:
[quote]
在jxl源代码时发现public static String getUnicodeString(byte[] d, int length, int pos)这个方法return后出现乱码。
也就是说还是编码问题,我用的jxl是2.6.5,jdk是1.4,找到jxl源码jxl.biff包下StringHelper这个类。
找到:public static String UNICODE_ENCODING = "unicodelittle";
这句代码改为:public static String UNICODE_ENCODING = "utf-16LE";
在jxl.read.biff包下找到BoundsheetRecord这个类,在public BoundsheetRecord(Record t)这个方法下name = new String(bytes);这句代码改为:

try {
name = new String(bytes,"UTF-16LE");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
name="error";
}
………………

[/quote]
但是最终都没能解决问题,最后我们是这样解决的:

java -Ddefault.client.encoding=GBK -Dfile.encoding=GBK -Duser.language=Zh

即在运行java进程时指定编码,终于又搞定了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值