【发布时间】:2013-04-25 08:33:43
【问题描述】:
在 Java Web 应用程序中,我使用 JExcel API 来读取客户端发送的 Excel 文件。
我正在做这样的事情:
byte[] excelFile = ...
InputStream inputStream = new ByteArrayInputStream(excelFile);
WorkbookSettings ws = new WorkbookSettings();
ws.setEncoding("CP1252");
Workbook w = Workbook.getWorkbook(inputStream, ws);
...
Struts 将 Excel 文件作为字节数组提供给我(我使用 FormFile#getFileData() 方法)。
它在 Windows 上运行良好。然而,这在 Linux 上是完全不同的。虽然可以正确解析单元格并且可以很好地解释其内容(即使有一些非 ASCII 字符,例如“à”、“ê”等),但工作表名称却不能。我得到了一些不好的字符,例如“?”或“�”。
我强制工作簿编码为 UTF-8:
ws.setEncoding("UTF-8");
但是没有效果。
我也将 Excel 文件更改为 UTF-8,但没有任何反应。我真的不明白为什么它不起作用,尤其是工作表名称,因为整个链都是 UTF-8(我有一个 Servlet 过滤器,它也强制 HTTP 请求编码为 UTF-8)。
【问题讨论】:
标签: java linux excel character-encoding struts