imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 08.01.2004, 15:00     # 1
AleXXXSoft
Guest
 
Сообщения: n/a

Exclamation Кодировка автоматом!

Есть строка текста русского в неизвестной кодировке.
Нужно распознать, что это за кодировка (win-1251, koi8-r, etc)
Есть ли какие стандартные средства (ну или не очень стандартные) в ПХП?
Может модуль какой или набор библиотек?

Была идея разработать набор своих функций с методом частотного анализа текса, но в общем даже не знаю, может есть чего готовое?
 
Старый 08.01.2004, 18:16     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Не скажу, что способ изящен, но поставленную задачу он решает.

1. Перекодируем во все известные нам кодировки (точнее из них в ту, в которой работаем)
2. Преобразуем к строчным, убираем \s\t\r\n
3. Считаем буковки.

Если буковок больше (strlen/4)*3, то на 99% кодировка опознана.

PS: Сразу скажу, что способ придуман мной, и возможно существуют более прогрессивные.
RaZEr вне форума  
Старый 08.01.2004, 18:58     # 3
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
AleXXXSoft
Автоматическое определение кодировки текста — 2 - теория
Простой(и ненадежный) алгоритм определения кодировки русского текста - практика, но другой вариант
Также здесь есть на си и на перле аналогичные алгоритмы
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 08.01.2004, 20:10     # 4
AleXXXSoft
Guest
 
Сообщения: n/a

все тоже самое я удачно обнаружил в Яндексе самостоятельно, скачал, установил и попробовал, но слишком тормозные скрипты.
Вот понравилось что:

http://www.rusf.ru/books/yo/xcode.html

но так влом переносить на ПХП.... видимо так и буду его вызывать..... через систем....

а вообще хотелось что-нить типа библиотеки iconv .... но видать ЖПС вышел...
 
Старый 08.01.2004, 20:13     # 5
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
2 AleXXXSoft: А мой вариант не подошел?
RaZEr вне форума  
Старый 08.01.2004, 21:01     # 6
AleXXXSoft
Guest
 
Сообщения: n/a

Цитата:
RaZEr:
2 AleXXXSoft: А мой вариант не подошел?
а я чегось-то не видел твоего поста.... щас попробую.... могет чего выйдет.

Добавлено через 37 минут:
таксь... а как быть с CP1251 и KOI8-R?
вот например:

рЕЯР АНКЭЬНИ РЮЙНИ РЕЯР БНР
Тест большой такой тест вот

не определишь?

Добавлено через 4 минуты:
Цитата:
RaZEr:
1. Перекодируем во все известные нам кодировки (точнее из них в ту, в которой работаем)
2. Преобразуем к строчным, убираем \s\t\r\n
3. Считаем буковки.

Если буковок больше (strlen/4)*3, то на 99% кодировка опознана.
обломс....
 
Старый 08.01.2004, 21:08     # 7
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
рЕЯР АНКЭЬНИ РЮЙНИ РЕЯР БНР
Обрати внимание на количество согласных. Их слишком много. Встречаются слова в которых по 5-7 согласных в ряд, а то и все слово. В русском языке такое встретишь нечасто.
RaZEr вне форума  
Старый 08.01.2004, 21:10     # 8
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
Так в статье на webzone и предлагался подход по определению кодировке на основе анализа сочетаний букв - к тому же самому и ведете
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 08.01.2004, 21:12     # 9
AleXXXSoft
Guest
 
Сообщения: n/a

ура! все-таки вот ента штучка http://tony2001.phpclub.net/detect_charset/detect.phps заработала, по крайней мере локально, осталось запустить это на сервере!

Цитата:
Saruman:
Респект тебе=)
 
Старый 08.01.2004, 21:12     # 10
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Тут не анализ сочетания, а три цифры - количество гласных, согласных и общее.
RaZEr вне форума  
Старый 08.01.2004, 21:15     # 11
AleXXXSoft
Guest
 
Сообщения: n/a

Цитата:
RaZEr:
quote:

рЕЯР АНКЭЬНИ РЮЙНИ РЕЯР БНР


Обрати внимание на количество согласных. Их слишком много. Встречаются слова в которых по 5-7 согласных в ряд, а то и все слово. В русском языке такое встретишь нечасто.
такой алгоритм разбора пар символов как допустимых или нет тоже работает, но он слишком медленный, поэтому он меня не устроил, а этот (выше) по скорости вполне ничего =)

Добавлено через 1 минуту:
усем спасибо (пока что)
 
Старый 08.01.2004, 21:23     # 12
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
RaZEr
Соотношение гласных и согласных в русской речи примерно 40% и 60% соответственно - приведенный тобой кусок как раз прекрасно подходит под эту статистику. Так что от анализа все равно никуда не деться, если хочешь получить более-менее точное определение.
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 08.01.2004, 21:28     # 13
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
такой алгоритм разбора пар символов как допустимых или нет тоже работает, но он слишком медленный
Он не медленней алгоритма тони, - и тот и другой заполняет массивы, пробегая по тексту. Но на мой взгляд на гласные проверять надежней, потому что фраза "ГДЕ ЭТОТ СРАНЫЙ КРОТ!" это не KOI-8.

Добавлено через 2 минуты:
2 Saruman: Количество согласных в KOI больше чем в WIN. Исключения так и остаются исключениями.
RaZEr вне форума  
Старый 12.01.2004, 18:53     # 14
AleXXXSoft
Guest
 
Сообщения: n/a

и снова проблемы, нашлись такие сочетания символов в текстах, что все эти умные программки неправильно определили кодировку =(

Добавлено через 3 минуты:
буду пробовать реализовать вот этот алгоритм
 
Старый 12.01.2004, 19:00     # 15
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
AleXXXSoft
Так у Тони и написано, что его алгоритм быстрый, но ненадежный. Если нужен был надежный - сразу бы за этот и брался.

Добавлено через 4 минуты:
Кста, вот еще только что попалось:
fix-mime-charset
Сам не разбирался, интересно - смотри, вдруг чем поможет.
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 12.01.2004, 19:14     # 16
AleXXXSoft
Guest
 
Сообщения: n/a

таксь, кое-что удалось...!

Этак лирическое отступление:
все эта лабуда нужна была для почтовика SquirrelMail.

Так вот, при установке Локали в Win1251 все само заработало, автоматическая перекодировка и т.д., но вот интерфейс русский работать перестал, стал английским по-умолчанию. Кто-нить общался с ентой софтиной, может есть какие советы?
 

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 13:23.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.