以ANSI格式读写文本

请查看以下代码

import java.io.*; public class CSVConverter { private File csvFile; private BufferedReader reader; private StringBuffer strBuffer; private BufferedWriter writer; int startNumber = 0; private String strString[]; public CSVConverter(String location, int startNumber) { csvFile = new File(location); strBuffer = new StringBuffer(""); this.startNumber = startNumber; //Read try { reader = new BufferedReader(new FileReader(csvFile)); String line = ""; while((line=reader.readLine())!=null) { String[] array = line.split(","); String inputQuery = "insertQuery["+startNumber+"] = \"insert into WordList_Table ('Engl','Port','EnglishH','PortugueseH','Numbe','NumberOf','NumberOfTime','NumberOfTimesPor')values('"+array[0]+"','"+array[2]+"','"+array[1]+"','"+array[3]+"',0,0,0,0)\""; strBuffer.append(inputQuery+";"+"\r\n"); startNumber++; } } catch(Exception e) { e.printStackTrace(); } System.out.println(strBuffer.toString()); //Write try { File file = new File("C:/Users/list.txt"); FileWriter filewrite = new FileWriter(file); if(!file.exists()) { file.createNewFile(); } writer = new BufferedWriter(filewrite); writer.write(strBuffer.toString()); writer.flush(); writer.close(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[]args) { new CSVConverter("C:/Users/list.csv",90); } } 

我正在尝试读取CSV文件,编辑代码中的文本,然后将其写回.txt文件。 我的问题是,我有葡萄牙语,所以文件应该使用ANSI格式读写。 现在,一些葡萄牙语单词被输出文件中的符号替换。

如何在Java中以ANSI格式读取和写入文本数据?

要读取具有特定编码的文本文件,可以将FileInputStreamInputStreamReader结合使用。 Windows ANSI的正确Java编码是Cp1252

 reader = new BufferedReader(new InputStreamReader(new FileInputStream(csvFile), "Cp1252")); 

要编写具有特定字符编码的文本文件,可以将FileOutputStreamOutputStreamWriter一起使用。

 writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "Cp1252")); 

InputStreamReaderOutputStreamWriter类在面向字节的流和具有特定字符编码的文本之间进行转换。