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 系统。您可能仍然希望将重音用法规范化为一种独特的形式,比如最短的字符序列:
static String toFileName(String name) {
return java.text.Normalizer.normalize(name, Form.NFKC);
}
How can I open files containing accents in Java?。
在此 link 上尝试了一切。对于大多数情况,Eclipse 中的配置 window->preference->general->workspace 设置为 utf-8,并且 project-> 运行ning 作为配置 vm Arguments:Dfile.encoding=UTF-8
应该已经解决问题。
但是如果你JDK不是SUN而且你是linux系统。你最好 echo $LANG 确保它是 UTF-8 然后编译和 运行 java src 代码通过 linux 命令 line.Problem 解决。 linux 中 java 代码 运行 的链接:
http://www.sergiy.ca/how-to-compile-and-launch-java-code-from-command-line/
我使用 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 系统。您可能仍然希望将重音用法规范化为一种独特的形式,比如最短的字符序列:
static String toFileName(String name) {
return java.text.Normalizer.normalize(name, Form.NFKC);
}
How can I open files containing accents in Java?。
在此 link 上尝试了一切。对于大多数情况,Eclipse 中的配置 window->preference->general->workspace 设置为 utf-8,并且 project-> 运行ning 作为配置 vm Arguments:Dfile.encoding=UTF-8
应该已经解决问题。
但是如果你JDK不是SUN而且你是linux系统。你最好 echo $LANG 确保它是 UTF-8 然后编译和 运行 java src 代码通过 linux 命令 line.Problem 解决。 linux 中 java 代码 运行 的链接: http://www.sergiy.ca/how-to-compile-and-launch-java-code-from-command-line/