Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Автоопределение кодировки

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Maximus_BRZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Помогите пожалуйста с функцией, которая будет автоматически определять кодировку исходного текста (WIN, KOI, DOS, ISO)!!!

----------
@borzov

Всего записей: 2219 | Зарегистр. 11-01-2003 | Отправлено: 20:28 19-07-2003
OOSL

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно сделать выборку из файла и проверить в какой диапазом попадают
коды русских букв(вернее проанализировать не англ буквы)..,но для этого файл должен быть не очень маленький
 А функция в API не знаю не встречал...

Всего записей: 85 | Зарегистр. 16-07-2003 | Отправлено: 06:40 20-07-2003
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Учитывая что кодировки пересекаются, то может не получиться однозначно определить.  Я как-то писал по такой системе - берем большой текстовый файл - считаем распределение (гистограмму) для каждой кодировки. А потом при определении кодировки просто считаем распределение и смотрим к какому ближе подходит.

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 08:21 20-07-2003
Arion



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А можно просто последовательноменять кодировку текста и анализировать результат по словарю (или спрашивать пользователя)

Всего записей: 436 | Зарегистр. 29-06-2003 | Отправлено: 08:48 20-07-2003
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если спрашивать пользователя, то это уже не автоматически...

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 08:54 20-07-2003
Arion



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну выдавать все варианты это, пожалуй, действительно свинство, можно показывать только наилучшие.

Всего записей: 436 | Зарегистр. 29-06-2003 | Отправлено: 08:59 20-07-2003
Maximus_BRZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
FuzzyLogic
Может подскажешь код этой самой твоей функции?

----------
@borzov

Всего записей: 2219 | Зарегистр. 11-01-2003 | Отправлено: 09:20 20-07-2003
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как домой доберусь, поискаю,  давно это было но может и найдется

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 16:27 20-07-2003
Speccy



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Буквы "О" встречаются в русском языке очень часто. Попробуй в каждой кодировке анализировать их количество. Где-то я читал про эту методику, но не помню где. Должно получиться.

Всего записей: 139 | Зарегистр. 12-01-2002 | Отправлено: 17:59 20-07-2003
Imageman



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
это частотный анализ. Но не только букву О нужно анализировать. Нужно и Щ тоже не забыть
 
Это нормально удет работать на обычных текстах с достаточной длиной (видимо начиная с 1000 символов).
 
Для более коротких текстов лучше анализировать слоги и слова. Например в русском никогда(?) не встретиться сочетание букв ЩЫ.  
 
В принципе можно попробовать нейросеть обучить распознавать по коротким фрагментам текста (30 символов, например) кодировку.

Всего записей: 129 | Зарегистр. 19-10-2001 | Отправлено: 18:53 21-07-2003
Speccy



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Нужно проверять наиболее часто встречающиеся буквы... Щ не так часто встречается.. Например, есть такая замечательная программулина, Aditor, называется.. Что-то типа блокнота, но намного КРУЧЕ! Она ловит кодировку махом.. Хоть будет одно слово написано... Я думаю, как раз таким макаром.. А про 1000 символов - это Ты через чур загнул))))))))))))))))

Всего записей: 139 | Зарегистр. 12-01-2002 | Отправлено: 19:50 21-07-2003
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну по одной букве думаю трудно будет, всяко бывает, и вообще чем больше статистики тем лучше, можно и слоги ещё поиндесксировать, а можно вообще словарь сделать, только оно на фиг не надо. Та функция что я писал пользовалась гейтом (была у нас в универе нечто типа bulletin board основанная на каких-то прилабудах к Pegasus Mail, а ещё были нормальные ньюсы на NNTP, так вот этот сервис синхронизировал сообщения в обеих системах, функция работала на 99.9% даже с сообщениями в пару слов.  К сожалению исходников той лабуды я так и не нашел, давно это было....лет так 6-7 назад

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 21:33 21-07-2003
Imageman



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Щ не так часто встречается

 
Именно! Т.е. алгоритм подумал, что это KOI8 текст, и оказалось, что "Щ" в этом тексте 15%. Как думаешь, правильно ли определилась кодировка?

Всего записей: 129 | Зарегистр. 19-10-2001 | Отправлено: 16:19 22-07-2003
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробуй через скан коды. Примерно так Bred2 делает.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 08:46 21-08-2003
mastervigo



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
У меня есть юнит xlat.  Поддерживает Win Koi Dos, определяет нормально. Вроде взял из инета. Могу выслать.

Всего записей: 1511 | Зарегистр. 17-08-2002 | Отправлено: 09:03 03-09-2003
abzac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот пара идей на счет кодировок
 
http://ivr.webzone.ru/articles/alt_win/index.htm
http://ivr.webzone.ru/articles/defcod_2/index.htm

Цитата:
 
Автоматическое определения кодировки текста  
Группа: "DELPHI"  
Последнее изменение: 21 сен 2002 (суббота), 20:28:33  
 
AG>  Существуют ли в сободном для изучения доступе алгоритмы автоматического
AG>  определения кодировки текста?
О, еще сколько. Методом таблицы модельных распределений:
 
[code]
type
TCodePage = (cpWin1251, cp866, cpKOI8R);
PMap = ^TMap;
TMap = array [#$80..#$FF] of Char;
 
function GetMap(CP: TCodePage): PMap;
{ должна возвращать указатель на таблицу перекодировки из CP в Windows1251
(nil для CP = cpWin1251) }
begin
GetMap:=nil;
end;
 
продолжение здесь -
http://blackman.wp-club.net/myfaq/00092002.php
 

 

Цитата:
xlat.zip [3 КБ] - модуль перекодировки текста между любой из кодировок Windows, КОИ8-Р, DOS. Также содержит функцию для автоматического определения кодировки русскоязычного текста. Определение кодировки текста основано на статистических свойствах букв русского языка, в функции используются 4 буквы (Аа Ии Оо Тт), имеющие наибольшую вероятность появления в русскоязычном тексте и при этом имеющие различные коды во всех трёх кодировках.

http://yanish.by.ru/projects/nb/xlat.zip

Всего записей: 646 | Зарегистр. 02-09-2002 | Отправлено: 15:15 04-09-2003 | Исправлено: abzac, 15:26 04-09-2003
mastervigo



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вот еще наткнулся
CyrCoder
Поддерживает CP1251, KOI8R, CP866, ISO8859

Всего записей: 1511 | Зарегистр. 17-08-2002 | Отправлено: 11:02 05-09-2003
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Автоопределение кодировки


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru