`
maku
  • 浏览: 8436 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

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);     
     

     还有的说这样解决:
     
引用

     在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";
    }
………………

    

     但是最终都没能解决问题,最后我们是这样解决的:
     
     java -Ddefault.client.encoding=GBK -Dfile.encoding=GBK -Duser.language=Zh
     

      即在运行java进程时指定编码,终于又搞定了。
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics