如上我都不知道怎么办了,该看什么地方的设置吗?代码应该是没有错的,就只是换了一个服务器而已在JAVA里打印的信息是:
insert into temp_wi_u_contactor ( vc_name, vc_mobile, vc_phone1, vc_phone2, fax,vc_email,address1,address2,vc_desc) values ('譳蝥?', 1234, '', '', '', '', '', '', '')
vc_name 为乱码了。JXL读取XLS文件的函数如下:    public static JxlReportModel readExcelXLS(String filename)
    {
        Workbook workbook = null;
        try {
            // 打开文件
            workbook = Workbook.getWorkbook(new File(filename));
            // 打开工作表
            Sheet sheet = workbook.getSheet(0);            Cell cell = null;
            int irow = 0;
            int icol = 0;            int nRows = sheet.getRows();
            int nCols = sheet.getColumns();
            String[][] cellData = new String[nRows][nCols];
            for (irow = 0; irow < nRows; irow ++) {
                for (icol = 0; icol < nCols; icol ++) {
                    // 注意,第一个参数是表示列的,第二个参数才表示行
                    cell = sheet.getCell(icol, irow);                    // 要根据单元格的类型分别做处理,否则格式化的内容会不正确                    if (cell.getType() == CellType.NUMBER) {                        //直接读取 Number 类型
                        cellData[irow][icol] = cell.getContents();                        //以科学计数法表示 Number 类型
//                        cellData[irow][icol] = String.valueOf((
//                            (NumberCell)cell).getValue());                    } else if (cell.getType() == CellType.DATE) {                        cellData[irow][icol] = String.valueOf((
                            (DateCell)cell).getDate());
                    } else {                        cellData[irow][icol] = cell.getContents();  // 就是这个出了乱码
                    } // end if                } // end cols
            } // end rows            // 返回
            JxlReportModel model = new JxlReportModel();
            model.setDataCols(nCols);
            model.setDataRows(nRows);
            model.setCells(cellData);            return model;
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        } finally {
            // 一定要关闭,否则有内存空洞存在
            if (workbook != null) {
                workbook.close();
            }        }
    }

解决方案 »

  1.   

    两台服务器编码不同?一台GB2312?一台UTF-8?
      

  2.   

    两台机器都是一样的,GBK编码。而且上传的XLS文件也是一样的,上传后的XLS文件也是正常的。我觉得应该是服务器的设置问题,可是服务器的区域都是中国,也应该是一样的了。除了之些,我也不知道该查什么了。原来的文字是:王文君
    JXL读出来的却是:譳蝥?
      

  3.   

    自己解决了,研究了半天,原来是JDK版本的问题,如果是 jdk1.4.2_5 就没这个问题,如果是 jdk1.4.2_12 就有这个问题