Java:当我将数据附加到文本文件,同时运行独立于 Netbeans 的 .jar 时,为什么中文/日文字符显示为 '???'?

标签 java encoding utf-8

当我在 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/

相关文章:

java - 更改 servlet 的版本,如何更改版本而不出现错误

java - 将对象保存到数据库时 hibernate 未知实体异常

java - ArrayList 删除除非包含字符

php - 将 MySQL 文本字段编码为 UTF-8 文本文件 - 特殊字符问题

Ruby Thin/Rack 奇怪的多字节字符行为

java - Split 方法是将字符串拆分为单个字符串

math - 就叶子数而言,完整k元树中的节点总数是多少?

Python 没有读取有效的 JSON

python - 无法在 python 2.7 和 django 1.9 中打开具有变音符号的文件名

php - 如何将文本字段输入自动保存为 utf8 编码数据?