![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Puoar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.11.2007 Репутация: нет Всего: 1 |
Как определить в какой закодирован анси или аски
|
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
По-моему в готовом виде такая инфа нигде не содержится. Можно использовать частотный анализ, чтобы определить с некоторой вероятностью
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
Cycle |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 1.12.2007 Репутация: 3 Всего: 3 |
ksili правильно говорит, что нужно использовать частотный анализ. Если речь идет о тексте на русском, то достаточно посчитать частоту появления буквы "а" (достаточно часто употребляемая) в одной кодировке и другой и на основании этого делать выводы. Если речь идет о более сложной ситуации, то лучше хранить среднюю частоту каждого символа и делать кореляционный анализ.
Второй метод, который прокатил в моем случае, заключается в проверке на недопустимость каки-либо символов. Например символ с кодом 0xA0 в ДОСе - это символ "а", а в кодировке Виндовс - это неразрывный пробел. Неразрывный пробел врядли можно встретить в БД, на этом основании я делал, вывод, какая это кодировка. В любом случае все эти способы не дают 100% гарантии, особенно на маленьких объемах текста, поэтому я бы оставил пользователю возможность исправить ошибку. Удачи. |
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
По-моему в русском языке самая часто встречающаяся буква - 'о'. Есть конечно вычисленные частоты встречаемости символов в различных языках (и даже для разных стилистик текста), которые справдливы для больших текстов. Но можно анализировать не по частотам всех символов, а по некоторым наиболее часто встречающимся. Для того чтобы запомнить такие символы есть специальные фразы.
В русском языке - ЛИТР НА СЕНОВАЛЕ В английском - HONDA TETRIS все буквы в этих словах являются наиболее встречающимися -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
Puoar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.11.2007 Репутация: нет Всего: 1 |
Спасибо всем кто ответил! Нда я думал есть способы поконкретней. Неужели в разных блокнотах используются эти методы.. :]
|
|||
|
||||
Puoar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.11.2007 Репутация: нет Всего: 1 |
Ёпрст
Это сообщение отредактировал(а) Puoar - 15.12.2007, 10:41 |
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Ну сам понимаешь, если бы был конкретный способ, все эти блокноты никогда бы не ошибались с кодировкой, а бывает откроешь файл, а там чушь какая-то - приходится кодировку переключать -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
фалы с UTF8 часто маркируются двумя байтами вначале.
для UCS-2 два байта на символ. один из символов - указатель алфавита, притом что анг - 0, рус - тоже входит в "служебную часть байтов" а так - частотный анализ. Тупо взять словарь даля, составить частотые характеристики и дальше думать)... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |