Как определить кодировку текста?

Discussion in 'WASM.ZEN' started by Stariy, Sep 7, 2004.

  1. Stariy

    Stariy Member

    Blog Posts:
    0
    subj.

    Имеется текст на русском языке, с примесью латинских символов и цифр. Как узнать (программно), в какой он кодировке (ну там 1251, КОИ и т.д.)?

    Первое, что пришло в голову - считать частоту использования всех символов, брать самый часто используемый (типа, это буква А) и сравнивать его код с кодом буквы А для всех известных кодировок. Но при маленьком тексте в несколько слов это не сработает.

    Можно искать слова по словарю или по окончаниям (ну типа комбинации букв "ющий", "ывший" и т.д.) - но это, по моему, тоже тупизм...

    Подкиньте идейку плз...
     
  2. Stariy

    Stariy Member

    Blog Posts:
    0
  3. ssx

    ssx Member

    Blog Posts:
    0
    ага, даже FAR, кажется, так и определяет кодировку
     
  4. volodya

    volodya wasm.ru

    Blog Posts:
    0
    А Штирлиц?
     
  5. S_T_A_S_

    S_T_A_S_ New Member

    Blog Posts:
    0
    Дык это не тупизм, так и простые шифры расшифровывают.
     
  6. Stariy

    Stariy Member

    Blog Posts:
    0
    Я думал раньше, что есть метод, который дает стопроцентную гарантию, что кодировка определена верно. А тут выходит, что на определенных текстах можно ошибиться... Хы, надо будет попробовать поискать такое слово, которое было бы осмысленным в двух и более кодировках...
     
  7. Inked Wedge

    Inked Wedge New Member

    Blog Posts:
    0
    2 Stariy

    А чего "А" самый частый? Насколько я знаю это "О" самый частый.



    А подстановкой шифруют только недоразвитые клоуны, метод определения - частотый анализ ^^^ (вышеописанный "тупизьм"), - срабатывает даже на коротких текстах.
     
  8. Stariy

    Stariy Member

    Blog Posts:
    0
    Правильно, "О". Это я ступил малость.
     
  9. khv_test

    khv_test New Member

    Blog Posts:
    0
  10. Johnikum

    Johnikum Member

    Blog Posts:
    0
    Я думаю определять можно по словам из одной буквы("а", "и"), стоящих между пробелами.

    Например:

    код "a" CP866 - A0h; utf8 - E0h

    код "и" CP866 - A8h; utf8 - E8h

    для других не проверял.



    только это справедливо для достаточно больших текстов, где встречаются эти союзы.