导出时不使用 Unicode 编写



所以我有一个程序,它应该将使用Unicode的文本写入文件。当我通过 Eclipse 执行此操作时,一切都有效,但在 exxport 时则不然。这是我通过 Eclipse 执行此操作时的样子:

Все товары: Ted По цене: 100руб Дерп По

цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп
По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб

Проданныетовары: Ted По цене: 100руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене:
10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб

Не проданные товары:

Всего пренесенно: 11 Кол-во проданно: 11 Кол-во не проданно: 0 Выручка: 200руб

这就是我从一个构建的罐子里做的时候的样子:

??? ??????:

????????? ??????:泰德?? ????:100??? ???? ??????: 10??? ???? ??????: 10??????? ??????: 10??????? ??????:
10??? ???? ??????: 10??????? ??????: 10??????? ??????: 10??????? ??????: 10??????? ??????: 10??????? ??????: 10???

?? ????????? ??????:

????? ??????????:11???-??????????: 11 ???-????????????: 0 ???????:200???

这是我的代码:

public void writeToFile(Purchase purchase, String dir) throws Exception {
file = new File(dir);
if (!file.exists()) {
file.createNewFile();
}
printer.println(purchase.getName() + "   По цене:   "
+ purchase.getPrice() + "руб");
Timer timer = new Timer();
}
public void writeFooter(List<Purchase> list) throws Exception {
int amountSold = 0;
int amountNotSold = 0;
int moneyRecieved = 0;
if (file == null) {
file = new File(dir);
}
if (!file.exists()) {
file.createNewFile();
}
openStreams();
printer.println("Все товары: ");
for(int i = 0; i < list.size();i++){
writeToFile(list.get(i), dir);
}
printer.println();
printer.println("Проданные товары: ");
for (int i = 0; i <= list.size() - 1; i++) {
if (list.get(i).isSold()) {
writeToFile(list.get(i), dir);
amountSold++;
moneyRecieved += list.get(i).getPrice();
}
}
printer.println();
printer.println("Не проданные товары: ");
for (int i = 0; i <= list.size() - 1; i++) {
if (!list.get(i).isSold()) {
writeToFile(list.get(i), dir);
amountNotSold++;
}
}

printer.println();
printer.println("Всего пренесенно: " + list.size());
printer.println("Кол-во проданно: " + amountSold);
printer.println("Кол-во не проданно: " + amountNotSold);
printer.println("Выручка: " + moneyRecieved + "руб");
closeStreams();
}

在下面的编码"UTF-8"可以省略,然后使用当前的平台编码:System.getProperty("file.encoding").

PrintWriter printer = new Printer(
new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));

还要注意编辑器编码和javac编译器编码是相同的;如果你想传递源代码。也许在 IDE 中也将它们显式设置为 UTF-8。

最新更新