Страницы

Поиск по вопросам

вторник, 31 марта 2020 г.

Не читает русский язык

#java #intellij_idea #utf_8 #cp1251


Работаю с файлами, мой код:

package com.company;
import java.io.*;
import  java.util.Scanner;
public class Censore {
    public static void main(String[] args) throws Exception {
        FileReader fr = new FileReader("C:\\Users\\Stepan\\Список.txt");
        Scanner scan = new Scanner(new InputStreamReader(new FileInputStream("C:\\Users\\Stepan\\Список.txt"),
"UTF-8");
        String t = scan.nextLine();
        fr.close();
        System.out.println(t);
        String[] mats = t.split(" ");
        int longarray = mats.length;
        Scanner fx = new Scanner(System.in);
        String stroka = fx.nextLine();
        for (int i = 0; i < longarray; i++) {
            stroka = stroka.replaceAll(mats[i], "*цензура*");
        }
        System.out.println(stroka);
    }
}


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


Ответы

Ответ 1



Как я уже писал выше: Стандартная виндовая кодировка - это CP-1251. В Java она кодируется как windows-1251, по этому в вашем коде нужно написать так: Scanner scan = new Scanner(new InputStreamReader(new FileInputStream("C:\\Users\\Stepan\\Список.txt"), "windows-1251")); UPD: Для справки: "ISO-8859-1" - западноевропейские языки "windows-1251" - стандартная Windows (русская) "UTF-8" - юникод

Ответ 2



Попробуйте это Scanner scanner = new Scanner( new InputStreamReader(new FileInputStream("fileNmae"), "UTF-8"));

Ответ 3



какая кодировка стоит у текстового файла? можно узнать нотпадом и т.д. и попробуйте узнать на каком кодировке выдает ИДЕА, можете проверит полученный результат вот тут: http://www.online-decoder.com/ru и ещё проверьте какая кодировка стоит на самой ИДЕА (Editor -> File Encodings)

Ответ 4



ХЗ как исправить, но винда юзает кодировку cp1251, и там руские символы шифруются иными байтами, нежели в utf-8(которая юзается средой разработки в идее так точно), т.е считанные байты нужно переводить в символы с помощью кодировки cp1251

Комментариев нет:

Отправить комментарий