【发布时间】:2011-08-07 18:54:57
【问题描述】:
我正在使用 JExcel 在 GAE/Java 应用程序中加载一个 excel 文件,如下所示:
上传文件的html表单如下:
<form id="" action="/save" method="post" enctype="multipart/form-data" accept-charset="ISO-8859-1">
<input name="file" type="file" value="load"/>
<input type="submit"value="load excel"/>
</form>
在我拥有的服务器中:
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 或将其删除)但没有成功。
谁能告诉我如何解决这个问题。
谢谢
【问题讨论】:
-
您如何确定服务器上的名称?我假设上传时的编码被忽略(我想它是二进制数据)。你检查过实际的字符串字符吗?字符串可能是正确的,但您只是在字符无法正确显示的地方打印它。
-
@jtahlborn 我将其保存在数据存储中。我注意到它存在编码问题,因为我有另一种方法可以下载数据存储中的数据。我注意到下载的数据不正确,所以我调试并看到在字符串变量名中它正在读取编码错误的数据,所以它被错误地保存等等。当调用 getContents() 方法时,问题就开始了。
-
您可能想研究 poi 如何确定文件字符编码。据我所知,GAE 的默认文件编码是“ascii”。如果 poi 依赖于默认文件编码,您可能会遇到问题。
标签: java google-app-engine servlets encoding jexcelapi