it-swarm.com.ru

чтение текстового файла с кодировкой utf-8 с использованием Java

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

Я уже настроил проект Java для обработки UTF-8 Javaproject ==> щелкните правой кнопкой мыши ==> properties ==> source ==> 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);
}

какие-нибудь другие идеи?

спасибо

25
Abrial

Использование 

    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 в кавычки

32
Shobhit Sharma

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

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

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

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

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

8
jinkal

Я сталкиваюсь с одной и той же проблемой каждый раз, когда он находит специальный символ, помечающий его как . Чтобы решить эту проблему, я попытался использовать кодировку: ISO-8859-1

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("txtPath"),"ISO-8859-1"));

while ((line = br.readLine()) != null) {

}

Я надеюсь, что это может помочь любому, кто видит этот пост.

2
joshua cleveland

Хорошо, я окончательно опоздал на вечеринку, но если вы все еще ищете оптимальное решение, я бы использовал следующее (для Java 8)

    Charset inputCharset = Charset.forName("ISO-8859-1");
    Path pathToFile = ....
    try (BufferedReader br = Files.newBufferedReader( pathToFile, inputCharset )) {
        ...
     }
0
7dr3am7