我有一个 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/