Подтвердить что ты не робот

Чтение и запись текста в формате ANSI

Пожалуйста, просмотрите следующий код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author 
 */
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. Прямо сейчас некоторые португальские слова заменяются символами в выходном файле.

Как я могу читать и записывать текстовые данные в файл в формате ANSI в Java?

4b9b3361

Ответ 1

Чтобы прочитать текстовый файл с определенной кодировкой, вы можете использовать FileInputStream в сочетании с InputStreamReader. Правильная кодировка Java для Windows ANSI - Cp1252.

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

Чтобы записать текстовый файл с определенной кодировкой символов, вы можете использовать FileOutputStream вместе с OutputStreamWriter.

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

Классы InputStreamReader и OutputStreamWriter переводят между байтовыми ориентированными потоками и текстом с определенным кодированием символов.