希腊字符问题 - 没有Netbeans

时间:2011-09-19 13:28:24

标签: java unicode character-encoding batch-file java-io

在应用程序中我将一些字符串写入文件。其中一些是希腊语。 当我使用Netbeans进行这个过程时,一切都很棒。 但是当我尝试用我的.bat文件运行它时,相同的代码用那个奇怪的“ ?”写下希腊语文本。字符。 很明显,netbeans会调节某些东西,它可以写出希腊文,但我找不到它。

写作示例: BufferedWriter out = new BufferedWriter(new FileWriter(FilePath)); out.write(text); out.close(); compile.bat和run.bat文件是他们可以获得的最简单的形式。

我该怎么做才能解决这个问题?

5 个答案:

答案 0 :(得分:1)

你需要以UTF-8输出试试:

try {
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
        new FileOutputStream(FilePath), "UTF8"));
    out.write(text);
    out.close();
} catch (UnsupportedEncodingException e) {
} catch (IOException e) {
}

答案 1 :(得分:1)

尝试一下:

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(yourFilePath,"UTF8"));
out.write(text); 
out.close();

答案 2 :(得分:1)

当您说使用NetBeans看到希腊字符很好时,您可能正在将输出写入NetBeans控制台,这是一个捕获标准输出的GUI窗口。 Windows通常在这些环境中呈现字符没有问题,因为字体非常丰富。

当您说您使用.BAT文件时,您可能正在写入Windows 控制台cmd.exe或Powershell)。您可以搜索有关使Windows控制台写入非ASCII文本的帮助;存在几个解释“代码页”和其他要知道的事情的来源。基本上它归结为确保您的控制台设置正确。

答案 3 :(得分:1)

经过大量的搜索,我解决了这个问题。

在.bat文件中输入:

Set JAVA_TOOL_OPTIONS= -Dfile.encoding=UTF8

答案 4 :(得分:0)

我有同样的问题,这段代码解决了它:

System.setProperty("file.encoding","UTF-8");
Field charset = Charset.class.getDeclaredField("defaultCharset");
charset.setAccessible(true);
charset.set(null,null);

Setting the default Java character encoding?