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

Чтение текстового файла с помощью кодировки utf-8 с использованием java

У меня проблема с чтением текстового файла с помощью кодировки utf-8 Я использую java с платформой netbeans 7.2.1.

Я уже настроил java-проект для обработки UTF-8 javaproject == > правый щелчок == > свойства == > источник == > UTF-8

но все равно получите вывод неизвестного символа:

код:

File fileDirs = new File("C:\\file.txt");

BufferedReader in = new BufferedReader(
new InputStreamReader(new FileInputStream(fileDirs), "UTF-8"));

String str;

while ((str = in.readLine()) != null) {
    System.out.println(str);
}

любые другие идеи?

спасибо

4b9b3361

Ответ 1

Используйте

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;     
    public class test {
    public static void main(String[] args){

    try {
        File fileDir = new File("PATH_TO_FILE");

        BufferedReader in = new BufferedReader(
           new InputStreamReader(new FileInputStream(fileDir), "UTF-8"));

        String str;

        while ((str = in.readLine()) != null) {
            System.out.println(str);
        }

                in.close();
        } 
        catch (UnsupportedEncodingException e) 
        {
            System.out.println(e.getMessage());
        } 
        catch (IOException e) 
        {
            System.out.println(e.getMessage());
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}

Вам нужно поставить UTF-8 в кавычки

Ответ 2

Вы правильно читаете файл, но проблема, похоже, связана с кодировкой по умолчанию System.out. Попробуйте это, чтобы напечатать строку UTF-8 string-

PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(str);

Ответ 3

Вам нужно указать кодировку InputStreamReader с помощью параметра Charset.

Charset inputCharset = Charset.forName("ISO-8859-1");
InputStreamReader isr = new InputStreamReader(fis, inputCharset));

Это работа для меня. я надеюсь помочь вам.