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

Неверный символ класса сканера Java "®"

У меня есть класс сканера, читающий файл в строке. Любой файл с этим символом "®" приводит к сбою. Я новичок в Java, есть ли лучший способ прочитать этот файл, чтобы символ был принят?

public void readFile(String fileName)
{
    fileText = "";

    try
    {
        Scanner file = new Scanner(new File(fileName));
        while (file.hasNextLine())
        {
            String line = file.nextLine();
            fileText += line +"\r"+"\n";
        }
        file.close();
    }
    catch (Exception e)
    {
         System.out.println(e);

   }
      }
4b9b3361

Ответ 1

По умолчанию Scanner использует кодировку символов по умолчанию для платформы, это может не соответствовать кодировке символа файла. JavaDoc утверждает:

Создает новый сканер, который производит значения, отсканированные из указанный файл. Байты из файла преобразуются в символы используя базовую кодировку по умолчанию для платформы.

Сначала определите, какой символ кодирует ваш файл, это можно сделать с помощью утилиты командной строки Linux file -i. Передайте правильное кодирование в сканер. Java 7 содержит предопределенные константы в java.nio.charset.StandardCharsets для некоторых известных наборов символов.

Scanner file = new Scanner(new File(fileName), StandardCharsets.UTF_8);

Ответ 2

Указать кодировку при создании сканера.

Scanner file= new Scanner(new File(fileName), "utf-8");

Ответ 3

Вы просто должны упомянуть кодировку UTF-8 при создании экземпляра класса сканера, вот и все.