Конвертировать файл Windows-1252 в файл UTF-8

Здравствуйте, у меня возникли некоторые проблемы с этой простой задачей преобразования. Вот мой код ниже (грубый, но не такой сложный):

        FileInputStream fis = new FileInputStream ("file");
    BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"CP1250"));

    try {

        StringBuilder sb = new StringBuilder();
        String line = null;
        try {
            line = reader.readLine();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        while (line != null) {
            sb.append(line);
            if(line.contains(" "))
            sb.append(System.lineSeparator());
            try {
                line = reader.readLine();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        String everything = sb.toString();
        System.out.println(everything);

        PrintWriter writer = null;
        try {
            writer = new PrintWriter("clean", "UTF-8");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        writer.println(everything);
        writer.close();
    } 

    finally {
        try {
            reader.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

Но я получаю тот же вывод, что и вход с тем же форматом кодирования. Видите ли вы в любом случае может помочь?

1 ответ

Документы говорят, что 1) public void println(String x) Печатает строку, а затем завершает строку. Этот метод ведет себя так, как будто он вызывает print(String) и затем println().

И 2) public void print(String s) Печатает строку. Если аргумент равен нулю, то выводится строка "ноль". В противном случае символы строки преобразуются в байты в соответствии с кодировкой символов платформы по умолчанию, и эти байты записываются точно так же, как и метод write (int).

Вы, вероятно, сделаете ваше обращение с

PrintWriter writer 
    = new PrintWriter(new OutputStreamWriter(new FileOutputStream("clean", true), 
        "UTF-8")); 
Другие вопросы по тегам