当前页面: 开发资料首页 → 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 就有这个问题