0

我有一个使用 Netbeans 开发的 Java 程序。我更改了 Netbeans 上的设置,以便它能够理解 UTF-8。

但是,如果我清理并构建我的程序并将其与我的 Windows 系统一起使用,文本编码会发生变化,并且诸如“ü”、“ä”和“ö”之类的字母将不再正确显示和使用。

如何与我的操作系统通信并告诉他使用 UTF-8?

或者有什么好的解决方法吗?

编辑:抱歉,蜜蜂如此不明确。嗯,首先:我使用 Docx4j 和 Apache POI 以及 getText() 方法从 doc、docx 和 pdf 中获取一些文本并将它们保存在字符串中。

然后我试图匹配这些文本中的关键字,我从 .txt 文件中读出。

这些关键字显示在可运行 Java 文件的组合框中。我可以在那里看到编码问题。它不会匹配任何使用上述单词的关键字。

在我的 IDE 中它工作正常。在我重新设计之后,我试图在这里发布一些代码。

TXT 文件采用 UTF-8 格式。如果我将它转换为 ANSI,我会看到与 Jar 中相同的问题。读出它:

  if(inputfile.exists() && inputfile.canRead())
            {
                try {

                    FileReader reader = new FileReader(inputfilepath);
                    BufferedReader in = new BufferedReader(reader);
                    String zeile = null;

                    while ((zeile = in.readLine()) != null) {

                       while(zeile.startsWith("#"))
                       {
                           if (zeile.startsWith(KUERZELTITEL)) {
                               int cut = zeile.indexOf('=');

                               zeile = zeile.substring(cut, zeile.length());
                               eingeleseneTagzeilen.put(KUERZELTITEL, zeile.substring(1));
                               kuerzel = zeile.substring(1);
                           }

...

这为我做到了:

                        File readfile   = new File(inputfilepath);
                    BufferedReader in = new BufferedReader(
                            new InputStreamReader(
                            new FileInputStream(readfile), "UTF8"));

谢谢!

4

2 回答 2

1

恭喜,我的项目也使用 UTF-8,这似乎是最好的。

只需确保编辑器和编译器使用相同的编码。这可确保 java 中的字符串文字在 jar、.class 文件中正确编码。

在 NetBeans 7.3 中,现在有一个设置(我正在使用 maven 构建)。

属性文件历来采用 ISO-8859-1 或编码为\uXXXX. 所以你必须小心。

Java 在内部使用 Unicode,因此可能没有其他问题。

FileReader reader = new FileReader(inputfilepath);

应该

BufferedReader reader = new BufferedReader(new InputStreamReader(
    new FileInputStream(inputfilepath), "UTF-8")));

FileWriter (OutputStreamWriter + encoding)、String.getBytes(encoding)、new String(bytes, encoding) 的相同过程(显式额外编码参数)。

于 2013-05-22T15:47:39.433 回答
0

尝试将 -Dfile.encoding=utf-8 作为 JVM 参数传递。

于 2013-05-22T15:33:06.667 回答