![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Есть ли надежный метод отличить строку OEM от ANSI? [D7, WinXP]
Aleksandr. © (2004-07-12 16:52:00)Две версии программы пишут в разных кодировках - одна в OEM, а вторая - в ANSI. Теперь их данные надо объединить одним обработчиком, но никак не могу сообразить, как по содержимым строки определить, надо ее в ANSI конвертировать или нет.
Anatoly Podgoretsky (2004-07-12 19:33:00) [1]Jeer © (12.07.04 17:49) [12]
Да разве к статистике есть претензии, претензии есть к постановке вопроса " надежный"
Aleksandr. (12.07.04 18:09) [14]
Раз ты щавел речь про 1251, то тогда не стоит вести речь про OEM/ANSI, а вести речь об конкретных кодировках. OEM/ANSI это другое. Кроме того у тебя сильно ограниченый набор 1251, например у меня в текстах часто встречаются ©®™¤Ё№¬…€‘’“”•¦§«°±ё» и такие же коды в 866, кроме того иногда используются и другие символы.
Aleksandr. (2004-07-12 18:09:00) [2]Ну, например: ОЕМ-строка, сколько я их ни просматриваю, на трассировке, в содержимом имеет знаки мягкого переноса, параграфы, подчеркивания, копирайты, национальные сиволы:
'€¢áâà «¨©áª¨© ¤®«« à 1'
Естессно, в русском тексте просто нет этих символов, а меня конвертация волнует только с русского OEM. Соответственно, при прогоне строки на сравнение с таким вот набором в 1251:
'0'..'9','A'..'Z','a'..'z','А'..'Я','а'..'я',' ',',','.','!',':','?',';','''','"','@','¹','%','*','(',')','[',']','','/','\','$','#','-',#9
можно быть достаточно уверенным, что любой знак, не попавший в него, является признаком OEM-содержимого строки. Я это дело сейчас опробовал, из трехсот тысяч строчек он ни разу не ошибся с определением: заведомо зная, что помимо этого набора, также не должны встречаться переносы строк - в каждой из OEM-строк оказался символ, не входящий в этот набор. Естессно, в список не включаю примерно 20% строк, которые оказались на английском - их конвертация мне и не нужна.
Reindeer Moss Eater (2004-07-12 17:56:00) [3]Проще сравнивать с сетом используемых символов,
Чем проще-то?
У тебя в тексте есть всего лишь байт, а не символ. Символом он станет кода будет ясна кодировка.
А сравнивать ты собрался с символом.
Jeer (2004-07-12 17:49:00) [4]Anatoly Podgoretsky © (12.07.04 17:34) [9]
Мы вообще живем в статистическом мире.:)
Aleksandr. (2004-07-12 17:48:00) [5]Понятно... Проще сравнивать с сетом используемых символов, куда нормальные русские люди не вбивают всякие там знаки параграфа и решетки...
Reindeer Moss Eater (2004-07-12 17:37:00) [6]В общем легче и дешевле показать юзеру фрагмент текста с перекодировкой и без и предложить выбрать самому.
Что то типа надписи на спине байкера:
"Если вы читаете это, значит моя подруга упала с мотоцикла"
Anatoly Podgoretsky (2004-07-12 17:34:00) [7]Статистические методы не относятся к надежным.
Reindeer Moss Eater (2004-07-12 17:33:00) [8]Только если это "оро" написано кириллицей.
Jeer (2004-07-12 17:32:00) [9]Reindeer Moss Eater © (12.07.04 17:28) [5]
>Статистика встречаемости слов в языке документа.
..символов..
Алхимик (2004-07-12 17:31:00) [10]Смотри информацию про так называемую "марковость".
Вероятность встретить "оро" достаточно высока, а "щщщ" стремится к нулю и т.д.
http://www.yandex.ru/yandsearch?rpt=rad&text=%EC%E0%F0%EA%EE%E2%EE%F1%F2%FC
Reindeer Moss Eater (2004-07-12 17:28:00) [11]Статистика встречаемости слов в языке документа.
Aleksandr. (2004-07-12 17:25:00) [12]Статистика чего? Я понимаю, что можно попробовать что-то сравнить и подсчитать, но что?
Reindeer Moss Eater (2004-07-12 17:12:00) [13]статистика.
Aleksandr. (2004-07-12 17:02:00) [14]Ну, заведомых нету, а статанализ - это что?
Reindeer Moss Eater (2004-07-12 16:54:00) [15]Статанализ либо поиск заведомо имеющихся слов/фраз в тексте.