繁体   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