当我在 Netbeans 中运行该程序时,我可以毫无问题地让这些字符(例如戦う)正确显示。之前,我将参数 -J-Dfile.encoding=UTF-8 添加到了 netbeans.conf 文件中。
本质上,我正在创建一个程序来将数据附加到文本文件的末尾。在通过 Netbeans 运行时,数据将被正确保存,并且当我打开文件时,字符将显示出来。但是,当我独立于 Netbeans 运行 .jar(或运行内置的 .exe)时,它只是将字符保存到文件中为“????”。
下面的代码显示了将数据附加到文件的方法。 boxValue[] 存储我要附加的字符串数据。通过 Netbeans 运行程序时,打开文件时文件输出将如下所示:
吃的食べる - 原味:赠送たべる 5 食べる
在没有 Netbeans 的情况下独立运行该程序,将在文本文件中生成以下内容:
???吃 - 平原:礼物??? 5 ???
private void prepareFile(String[] boxValue, boolean ruVerbIN, String addressIN){
<前>尝试
{
整数计数器 = 0;
int 计数器2;
if(ruVerbIN == false)
{
计数器2 = 63;
}
别的
{
计数器2 = 55;
}
文件 wordFile = new File(addressIN);
FileWriter fileWriter = new FileWriter(wordFile, true);
BufferedWriter 缓冲区 = new BufferedWriter(fileWriter);
PrintWriter printWriter = new PrintWriter(缓冲区);
while(计数器<=计数器2)
{
printWriter.println(boxValue[计数器]);
计数器++;
}
printWriter.close();
计数器 = 0;
outputTextBox.setText("导出成功。");
}
捕获(IOException e)
{
outputTextBox.setText("出现错误。您确定输入的目录正确吗?例如:"+ "\n\n"+ "\"C:\\\\Users\\\\Jayden\\\\文档\\\\FLTR\\\\FLTR 数据\\\\Japanese_Words.csv\"");
}
}
最佳答案
您是否尝试在程序中再次读取该文件?在 Windows 机器上,默认编码是 CP-1252 而不是 UTF-8。
您还可以将 BufferedWriter 与给定的字符集一起使用
FileWriter fw = new FileWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
或使用 Java7
Charset charset = Charset.forName("UTF-8"); BufferedWriter writer = Files.newBufferedWriter(p.resolve("foo.txt"), charset)
关于Java:当我将数据附加到文本文件,同时运行独立于 Netbeans 的 .jar 时,为什么中文/日文字符显示为 '???'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28063011/