[Java]. Отличить cp1251 от Utf-8?

Svetlanka

Как указать в коде, что файл, из которого мы читаем (символьный поток) находится в кодировке UTF-8, а не cp1251?

maggi14

а это как? может, просто сконвертировать строку?

Dasar

в общем случае, никак.
в частных, можно извернуться:
1. есть utf с сигнатурой. Первые 3-символа такого файла: 0xEF, 0xBB, 0xBF
2. проанализировать распределение тех или иных символов, и соотнести с кодировкой.

bleyman

Чувак спрашивал
> Как указать в коде
Я так понял, что ему нужен конструктор текстридера, в который можно будет передать енкодинг.утф8, например.

ifani

Мне вообще-то казалось, что Ява по умолчанию предполагает кодировку UTF-8....
На ум приходят два варианта:
1. С потоком обычно работают как массивом байт. Вот и считываешь всё в массив байт, а затем создаёшь объект String, передав в конструктор массив данных и желаемую кодировку (есть у него такой конструктор).
2. Воспользоваться статическим методом DataInputStream.readUTF(поток ввода).
Вообще сам ужасно не люблю, когда так пишут, но всё-таки rtfm % Посмотри классы пакета java.io.

sasha79

Reader reader = new InputStreamReader(new FileInputStream("filename.ext" Charset.forName("UTF-8";

Svetlanka

Спасибо!
Можно чуть иначе:
Reader reader = new InputStreamReader(new FileInputStream("filename.ext" "UTF-8");

sasha79

клево
Оставить комментарий
Имя или ник:
Комментарий: