Excel文件在Java的Web應用程序,我使用的是JExcel API來讀取客戶發送的Excel文件。字符編碼問題而讀在Java Web應用程序
我在做這樣的事情:
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)。
沒關係,但你怎麼能解釋我有在Linux上這個問題,而不是在Windows中(如Excel是有罪的)? – mishka 2013-04-25 12:14:04
好問題,也許這是與Windows的默認編碼是「Windows-1252」(一個Windows特有的編碼格式可能也用於Excel),而在Unix上它是「UTF-8」。我在Mac上工作,並有同樣的問題.... – Nos 2013-04-25 12:21:43