在应用程序中我将一些字符串写入文件。其中一些是希腊语。 当我使用Netbeans进行这个过程时,一切都很棒。 但是当我尝试用我的.bat文件运行它时,相同的代码用那个奇怪的“ ?”写下希腊语文本。字符。 很明显,netbeans会调节某些东西,它可以写出希腊文,但我找不到它。
写作示例:
BufferedWriter out = new BufferedWriter(new FileWriter(FilePath));
out.write(text);
out.close();
compile.bat和run.bat文件是他们可以获得的最简单的形式。
我该怎么做才能解决这个问题?
答案 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);