[英]Apache POI or java.io support non-English character or not?
我使用Apache POI從Excel文件中讀取,以獲取docx,doc,xls和xlsx文件的路徑,解密文件內容並建立新的路徑以讀取數據。
現在的問題是當路徑具有法語字符時,如下所示:
/Valérie/CASES.doxcs
is = new FileInputStream(path);
該行將具有以下異常:
(No such file or directory)
at java.io.FileInputStream.open(Native Method)
它在其他路徑上也能很好地工作,是否意味着Apache POI不支持非英語字符或其他問題? 有任何解決這個問題的方法嗎?
由於這是操作系統問題,因此可以轉換路徑:
static String toFileName(String name) {
return java.text.Normalizer.normalize(name, Form.NFKD)
.replaceAll("\\P{ASCII}", ""); //.replaceAll("[\"/\\]", "_");
}
通過將重音字母拆分為基本字母和重音,上述內容會將é
轉換為e
等。 可能會有更好的音譯。 並考慮西里爾字母和其他腳本。
更好的解決方案是遷移到具有UTF-8的Linux系統。 您可能仍想將口音用法標准化為一種獨特的形式,例如最短的char序列:
static String toFileName(String name) {
return java.text.Normalizer.normalize(name, Form.NFKC);
}
如何用Java打開包含重音符號的文件? 。 嘗試了此鏈接上的所有內容。 在大多數情況下,將Eclipse窗口->首選項->常規->工作區中的配置設置為utf-8,並以配置vm參數運行Dfile.encoding=UTF-8
>參數: Dfile.encoding=UTF-8
應該已經解決了該問題。
但是,如果您的JDK不是SUN並且您在linux系統中。 您最好回顯$ LANG以確保它為UTF-8,然后通過linux命令行編譯並運行java src代碼。問題已解決。 Java代碼的鏈接在linux中運行: http : //www.sergiy.ca/how-to-compile-and-launch-java-code-from-command-line/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.