Чтение строки из текстового файла с помощью FileReader, с использованием System.out.println кажется печать в Unicode? - PullRequest
2 голосов
/ 30 июня 2010

Я все еще учу себя Java, поэтому я хотел попробовать прочитать текстовый файл и шаг 1) вывести его на консоль, а шаг 2) записать содержимое в новый текстовый файл.

Вот код, который яу меня есть google'd для начала, и он читает файл, но когда я вывожу содержимое строки в консоль, я получаю следующее (выглядит как его вывод в Unicode или как-то так ... как каждый символ как дополнительный байт, связанный с ним....

ÿþFF□u□l□l□ □T□i□l□t□ □P□o□k□e□r□ <SNIP>

Вот как выглядит первая строка файла при открытии через блокнот: Full Tilt Poker Game #xxxxxxxxxx: $1 + $0.20 Sit & Go (xxxxxxxx), Table 1 - 15/30 - No Limit Hold'em - 22:09:45 ET - 2009/12/26

Вот мой кодМне нужно указать кодировку для отображения содержимого TXT-файлов на консоли? Я предполагал, что простой текст будет простым для Java ... но я новичок и не очень разбираюсь в том, насколько привередливые Java еще.

РЕДАКТИРОВАТЬ: Я не знаю, если это имеет значение, но я использую Eclipse в качестве моей IDE в настоящее время.

package readWrite;

import java.io.*;

public class Read {
    public static void main(String args[])
    {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader("C:\\Users\\brian\\workspace\\downloads\\poker_text.txt"));
            String line = reader.readLine();

            while (line!=null) {
                // Print read line
                System.out.println(line);

                // Read next line for while condition
                line = reader.readLine();
            }

        } catch (IOException ioe) {
            System.out.println(ioe.getMessage());
        } finally {
            try { if (reader!=null) reader.close(); } catch (Exception e) {}
        }
    }
}

1 Ответ

8 голосов
/ 30 июня 2010

ÿþ в начале выглядит как Byte Order Mark для UTF-16 закодированного файла.

http://en.wikipedia.org/wiki/Byte_order_mark#UTF-16

Возможно, вам потребуется прочитать файл другим способом, чтобы Java могла преобразовать эти символы UTF-16 во что-то, что может отображать ваш System.out.

Попробуйте что-то вроде этого

FileInputStream fis = new FileInputStream("filename");
BufferedReader reader = new BufferedReader(new InputStreamReader(fis, "UTF-16"));

OR

Снова откройте текстовый файл в блокноте и выберите Файл / Сохранить как. На экране сохранения (по крайней мере, в Windows 7) есть раскрывающийся список с настройкой кодировки. Выберите ANSI или UTF-8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...