Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改Java程序的文本编码?_Java_Windows_Utf 8 - Fatal编程技术网

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

如何更改Java程序的文本编码?,java,windows,utf-8,Java,Windows,Utf 8,我有一个Java程序,是用Netbeans开发的。 我更改了Netbeans上的设置,以便它能够理解UTF-8 但是,如果我清理、构建程序并在Windows系统中使用它,文本编码会发生变化,“ü”、“ä”和“ö”等字母将不再正确显示和使用 我如何与我的操作系统通信并告诉他使用UTF-8 还是有什么好的解决办法 编辑:Sry对于Being的描述太不具体了。 首先,我使用Docx4j和apachepoi以及getText()方法从doc、docx和pdf中获取一些文本,并将它们保存在字符串中 然后我

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

但是,如果我清理、构建程序并在Windows系统中使用它,文本编码会发生变化,“ü”、“ä”和“ö”等字母将不再正确显示和使用

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

还是有什么好的解决办法

编辑:Sry对于Being的描述太不具体了。 首先,我使用Docx4j和apachepoi以及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"));

谢谢

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

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

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

在NetBeans7.3中,现在有一个设置(我使用的是maven构建)

属性文件历史上是ISO-8859-1格式,或编码为
\uxxx
。所以你得小心点

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)的相同过程(显式额外编码参数)。

这一点非常不清楚。向我们展示您正在执行的代码,告诉我们字符的打印位置(console、webapp、Swing app?)Java使用unicode,为什么要将其更改为UTF-8?错误显示的具体位置和内容?请更具体。Java在内部将所有字符串作为Unicode处理。您正在尝试读取文件/stdin吗?您正在尝试写入文件/stdout吗?您的意思是尝试使用记事本查看源代码吗?请务必告诉我们文本文件的编码是什么,并向我们显示读取此文件的代码。如何才能做到这一点?你能给我举个例子吗?事实上我在你编辑之前就已经写了这个。。。如果您从文本文件读取,则文件本身必须进行utf-8编码。当从文件中读取时,将UTF8传递给InputStreamReaderas以回答您的问题,这将是针对您的问题,类似于java-Dfile.encoding=utf-8-jar yourjarfileperfect。谢谢。在阅读你的文章之前,我使用了相同的代码行。我更改了Inputencoding,它在可运行的jar中运行良好。