站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题郁闷,同样的代码,同样的数据库,用JXL导入EXCEL数据,怎么在一台服务器上正常,一台服务器上乱码的???

郁闷,同样的代码,同样的数据库,用JXL导入EXCEL数据,怎么在一台服务器上正常,一台服务器上乱码的???

摘要: 郁闷,同样的代码,同样的数据库,用JXL导入EXCEL数据,怎么在一台服务器上正常,一台服务器上乱码的???


如上

我都不知道怎么办了,

该看什么地方的设置吗?

代码应该是没有错的,就只是换了一个服务器而已

在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();
}

}
}



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


两台机器都是一样的,GBK编码。而且上传的XLS文件也是一样的,上传后的XLS文件也是正常的。

我觉得应该是服务器的设置问题,可是服务器的区域都是中国,也应该是一样的了。

除了之些,我也不知道该查什么了。

原来的文字是:王文君
JXL读出来的却是:譳蝥?




再顶


自己解决了,

研究了半天,原来是JDK版本的问题,

如果是 jdk1.4.2_5 就没这个问题,如果是 jdk1.4.2_12 就有这个问题




↑返回目录
前一篇: 求助一个简单的问题
后一篇: 请高手指教:自己做的最小化窗口,为什么发布到服务器上就不起作用了?