我有一个Java-Programm,我用Netbeans开发。 我更改了Netbeans上的设置,以便它能理解UTF-8。
但是,如果我清理并构建我的程序并将其与我的Windows系统一起使用,则文本编码会发生变化并且字母如下:“ü”,“ä”和“ö”不再显示和使用。
我如何与我的操作系统通信并告诉他使用UTF-8?
或者有什么好的解决方法吗?
编辑:因为非常特殊而感到害怕。 好吧,首先:我使用Docx4j和Apache POI和getText()方法从doc,docx和pdf中获取一些文本并将它们保存在String中。
然后我尝试匹配那些文本中的关键字,我从.txt文件中读取。
这些关键字显示在可运行Java文件的Combobox中。 我可以在那里看到编码问题。它不会使用上述单词匹配任何关键字。
在我的IDE中它的工作正常。 在我重新设计它之后,我试图在这里发布一些代码。
TXT-File采用UTF-8格式。如果我转换它,我会看到像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"));
THX!
答案 0 :(得分: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)的相同过程(显式额外编码参数)。
答案 1 :(得分:0)
尝试将-Dfile.encoding = utf-8作为JVM参数传递。