Therapyx
@Therapyx
Data Science

Как определить формат кодировки фаила?

(Точнее даже не просто Юникод, а "обновил заголовок вопроса")...
Задача состоит в следующем. Считывая фаил, надо определить его кодировку к примеру ANSI, UTF-8, UTF-8-BOM и еще штуки 3 других. Пока что в голову приходят только такие мысли(поправьте если не прав).
Взять хотябы первую строку фаила, разбить ее по 8 битам, и уже на этой основе проверять дальше.
1) Но вот как?
Пока-что сделал массив байтов из принимаевого фаила в функцию
byte[] bFile = new byte[(int) file.length()];
который вывожу на экран через
System.out.println(Integer.toBinaryString(b & 255 | 256).substring(1));

Возмем к примеру фаил с 1 буквой d - на выводе получаем 01100100, возмем D - на выходе получаем 01100100 (notepad++ определяет формат как ANSI)
Создаю новый фаил - пишу уже рус. Д - на выходе получаю 11010000 10010100
дописываю к Д англ. а = "Да(англ)" на выходе выходит
11010000
10010100
01100001
Notepad++ опрежеляет как UTF-8.
И так же для UTF-8-BOM там уже идет по 4 байта за символ.
2) да вот, символов ведь много разных, это может быть как Турецкие буквы, так и Русские, так и немецкие типа äüö и каждый символ может растягиваться даже на 4+ байта. Как же все таки сделать такую схему, которая бы определяла юникод используемый в фаиле?(без волшебных библиотек, если таковые есть...).
3) Или хотябы если кто знает, как можно разделить вывод 8 битных строк, чтобы хотябы для начала на глаз можно было определить, что эти 4 байта 11010000 10010100 11010000 10010100 это 2 буквы, а не 1 итд, чтобы выходило примерно так
11010000 10010100
11010000 10010100
или так :)
11010000
10010100

11010000
10010100
  • Вопрос задан
  • 507 просмотров
Пригласить эксперта
Ответы на вопрос 2
AnnTHony
@AnnTHony
Интроверт
Сюда загляните
Еще такой алгоритм нашел.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы