JExcel中的编码问题

我正在使用JExcel在GAE / Java应用程序中加载excel文件,如下所示:

上传文件的html表单如下:

在服务器上我有:

 ServletFileUpload upload = new ServletFileUpload(); FileItemIterator iterator = upload.getItemIterator(request); while (iterator.hasNext()) { FileItemStream item = iterator.next(); InputStream stream = item.openStream(); if (!item.isFormField()) { //if it's not a form field it's a file Workbook workbook = Workbook.getWorkbook(stream); ... String name = sheet.getCell(COL_NUMBER, row).getContents(); } } 

问题是,如果我在单元格中写入类似“ cityó ”的内容,当它在服务器中读取时,变量名称是“ city”? ”。 编码不正常。

我试图更改accept-charset =“ISO-8859-1”(将其设置为utf-8或删除它)但没有成功。

谁能告诉我怎么能解决这个问题呢。

谢谢

好的,我这样做了:

 WorkbookSettings ws = new WorkbookSettings(); ws.setEncoding("Cp1252"); Workbook workbook = Workbook.getWorkbook(stream, ws); 

WorkbookSettings将查找系统属性jxl.encoding

如果您无法轻松访问WorkbookSettings(即来自Drools- ExcelParser),您可能会发现这更为可取。

首先,请确保您使用的是最新版本的POI(类似于3.7或3.8 beta 2)。 非常旧版本的POI确实存在编码问题,但只要您使用的是新版本,那么这不应该是您的问题。

接下来,在本地计算机上,对文件运行类似org.apache.poi.hssf.extractor.ExcelExtractor的内容。 这将让您确认POI正确处理编码。 运行它

 java -classpath poi-3.8-beta2.jar org.apache.poi.hssf.extractor.ExcelExtractor --show-sheet-names Y -i MyExcel.xls 

假设工作正常,那么您就知道您的问题在Google App Engine中。