Java 导出时不使用Unicode写入
所以我有一个程序,应该是写文本,使用unicode,到一个文件。当我通过Eclipse进行操作时,一切都可以正常工作,但在导出时就不行了。下面是我通过Eclipse执行此操作时的外观: Саааааааааа:TedПаааа:100ббааПа ццбббббПббббПббббббб По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп ПцццццПцц:10цццПц:10ццц ПСааааааааа:TedПааа:100ПбааааПа ПСПццбПцц:10цбббПц:10ббббб 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10руб Дерп По цене: 10бб ааааааа аСааааааа:11аааааааааа:0 ача:200бб 这就是我在一个内置的罐子里做这件事时的样子: ?????????????: Ted??:100??? ???? ?? ????: 10??? ???? ?? ????: 10??? ???? ?? ????: 10??? ???? ?? ????:Java 导出时不使用Unicode写入,java,file,unicode,printwriter,Java,File,Unicode,Printwriter,所以我有一个程序,应该是写文本,使用unicode,到一个文件。当我通过Eclipse进行操作时,一切都可以正常工作,但在导出时就不行了。下面是我通过Eclipse执行此操作时的外观: Саааааааааа:TedПаааа:100ббааПа ццбббббПббббПббббббб По цене: 10руб Дерп По цене: 10руб Дерп По цене: 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();
}
public void writeToFile(Purchase,String dir)引发异常{
文件=新文件(目录);
如果(!file.exists()){
createNewFile();
}
printer.println(purchase.getName()+“Пццц”:
+purchase.getPrice()+“crmk_б”);
定时器=新定时器();
}
public void writeFooter(列表)引发异常{
int amountsell=0;
int amountnotsell=0;
int MoneyReceived=0;
if(file==null){
文件=新文件(目录);
}
如果(!file.exists()){
createNewFile();
}
openStreams();
打印机。打印机名称(“Саааф”);
对于(int i=0;i 对于(int i=0;i在下面的代码中,可以省略编码“UTF-8”,然后使用当前的平台编码:System.getProperty(“file.encoding”)
还请注意,编辑器编码和javac编译器编码是相同的;如果您想传递源代码,也可以在IDE中将它们显式设置为UTF-8。在创建打印机时设置字符集无论何时进行任何类型的输入/输出,都需要指定字符集,否则它将自动决定对你来说。当使用超越ASCII字符时,自动/默认值将不可避免地导致高概率的问题。另外,请参阅他使用的工具,确保他不会犯与你相同的错误。
PrintWriter printer = new Printer(
new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));