簡體   English   中英

Apache POI或java.io是否支持非英文字符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM