java - 如何更改 Java 程序的文本编码?

标签 java windows utf-8

我有一个 Java 程序,是用 Netbeans 开发的。 我更改了 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"));

谢谢!

最佳答案

恭喜,我的项目也使用 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 + 编码)、String.getBytes(encoding)、new String(bytes, encoding) 的过程相同(显式额外编码参数)。

关于java - 如何更改 Java 程序的文本编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16695681/

相关文章:

c++ - 如何使用 C++ 通过其句柄关闭 MessageBox 窗口

javascript - React Native packager.js 错误导致开发服务器崩溃?

Java API 获取特定脚本的代码点列表?

java - java另一种字符串转换URL utf8

Java:比较两个字符串数组并删除两个数组中存在的元素

java - 如何从 RabbitMQ 队列中删除消息

java - 如何解决服务器在 TCP 通信上收到的 RTSP 消息的冲突?

java.lang.IllegalArgumentException - 'other' 具有不同的根

json - 使用 powershell 编辑 .json 文件

http - 通过 postman 而不是通过java代码在elasticsearch中查询