Открываю программу а там иероглифы. Маскарад символов: unicode-ориентированные аспекты безопасности

Когда вы открываете текстовый файл в Microsoft Word или другой программе (например, на компьютере, язык операционной системы на котором отличается от того, на котором написан текст в файле), кодировка помогает программе определить, в каком виде нужно вывести текст на экран, чтобы его можно было прочитать.

В этой статье Общие сведения о кодировке текста

Текст, который отображается в виде текста на экране, на самом деле сохраняется как числовые значения в текстовом файле. Компьютер переводит числовые значения в видимые символы. Для этого используется стандарт кодировки.

Кодировка - это схема нумерации, согласно которой каждому текстовому символу в наборе соответствует определенное числовое значение. Кодировка может содержать буквы, цифры и другие символы. В различных языках часто используются разные наборы символов, поэтому многие из существующих кодировок предназначены для отображения наборов символов соответствующих языков.

Различные кодировки для разных алфавитов

Сведения о кодировке, сохраняемые с текстовым файлом, используются компьютером для вывода текста на экран. Например, в кодировке "Кириллица (Windows)" знаку "Й" соответствует числовое значение 201. Когда вы открываете файл, содержащий этот знак, на компьютере, на котором используется кодировка "Кириллица (Windows)", компьютер считывает число 201 и выводит на экран знак "Й".

Однако если тот же файл открыть на компьютере, на котором по умолчанию используется другая кодировка, на экран будет выведен знак, соответствующий числу 201 в этой кодировке. Например, если на компьютере используется кодировка "Западноевропейская (Windows)", знак "Й" из исходного текстового файла на основе кириллицы будет отображен как "É", поскольку именно этому знаку соответствует число 201 в данной кодировке.

Юникод: единая кодировка для разных алфавитов

Чтобы избежать проблем с кодированием и декодированием текстовых файлов, можно сохранять их в Юникоде. В состав этой кодировки входит большинство знаков из всех языков, которые обычно используются на современных компьютерах.

Так как Word работает на базе Юникода, все файлы в нем автоматически сохраняются в этой кодировке. Файлы в Юникоде можно открывать на любом компьютере с операционной системой на английском языке независимо от языка текста. Кроме того, на таком компьютере можно сохранять в Юникоде файлы, содержащие знаки, которых нет в западноевропейских алфавитах (например, греческие, кириллические, арабские или японские).

Выбор кодировки при открытии файла

Если в открытом файле текст искажен или выводится в виде вопросительных знаков либо квадратиков, возможно, Word неправильно определил кодировку. Вы можете указать кодировку, которую следует использовать для отображения (декодирования) текста.

Откройте вкладку Файл .

Нажмите кнопку Параметры .

Нажмите кнопку Дополнительно .

Перейдите к разделу Общие и установите флажокПодтверждать преобразование формата файла при открытии .

Примечание: Если установлен этот флажок, Word отображает диалоговое окно Преобразование файла при каждом открытии файла в формате, отличном от формата Word (то есть файла, который не имеет расширения DOC, DOT, DOCX, DOCM, DOTX или DOTM). Если вы часто работаете с такими файлами, но вам обычно не требуется выбирать кодировку, не забудьте отключить этот параметр, чтобы это диалоговое окно не выводилось.

Закройте, а затем снова откройте файл.

В диалоговом окне Преобразование файла выберите пункт Кодированный текст .

В диалоговом окне Преобразование файла установите переключатель Другая и выберите нужную кодировку из списка.

В области Образец

Если почти весь текст выглядит одинаково (например, в виде квадратов или точек), возможно, на компьютере не установлен нужный шрифт. В таком случае можно установить дополнительные шрифты.

Чтобы установить дополнительные шрифты, сделайте следующее:

Нажмите кнопку Пуск и выберите пункт Панель управления .

Выполните одно из указанных ниже действий.

В Windows 7

  • На панели управления выберите элемент Удаление программ .

    Изменить .

    В Windows Vista

    На панели управления выберите раздел Удаление программы .

    В списке программ щелкните Microsoft Office или Microsoft Word, если он был установлен отдельно от пакета Microsoft Office, и нажмите кнопку Изменить .

    В Windows XP

    На панели управления щелкните элемент Установка и удаление программ .

    В списке Установленные программы щелкните Microsoft Office или Microsoft Word, если он был установлен отдельно от пакета Microsoft Office, и нажмите кнопку Изменить .

  • В группе Изменение установки Microsoft Office нажмите кнопку Добавить или удалить компоненты и затем нажмите кнопку Продолжить .

    В разделе Параметры установки разверните элемент Общие средства Office , а затем - Многоязыковая поддержка .

    Выберите нужный шрифт, щелкните стрелку рядом с ним и выберите пункт Запускать с моего компьютера .

    Совет: При открытии текстового файла в той или иной кодировке в Word используются шрифты, определенные в диалоговом окне Параметры веб-документа . (Чтобы вызвать диалоговое окно Параметры веб-документа , нажмите кнопку Microsoft Office , затем щелкните Параметры Word и выберите категорию Дополнительно . В разделе Общие нажмите кнопку Параметры веб-документа .) С помощью параметров на вкладке Шрифты диалогового окна Параметры веб-документа можно настроить шрифт для каждой кодировки.

    Выбор кодировки при сохранении файла

    Если не выбрать кодировку при сохранении файла, будет использоваться Юникод. Как правило, рекомендуется применять Юникод, так как он поддерживает большинство символов большинства языков.

    Если документ планируется открывать в программе, которая не поддерживает Юникод, вы можете выбрать нужную кодировку. Например, в операционной системе на английском языке можно создать документ на китайском (традиционное письмо) с использованием Юникода. Однако если такой документ будет открываться в программе, которая поддерживает китайский язык, но не поддерживает Юникод, файл можно сохранить в кодировке "Китайская традиционная (Big5)". В результате текст будет отображаться правильно при открытии документа в программе, поддерживающей китайский язык (традиционное письмо).

    Примечание: Так как Юникод - это наиболее полный стандарт, при сохранении текста в других кодировках некоторые знаки могут не отображаться. Предположим, например, что документ в Юникоде содержит текст на иврите и языке с кириллицей. Если сохранить файл в кодировке "Кириллица (Windows)", текст на иврите не отобразится, а если сохранить его в кодировке "Иврит (Windows)", то не будет отображаться кириллический текст.

    Если выбрать стандарт кодировки, который не поддерживает некоторые символы в файле, Word пометит их красным. Вы можете просмотреть текст в выбранной кодировке перед сохранением файла.

    При сохранении файла в виде кодированного текста из него удаляется текст, для которого выбран шрифт Symbol, а также коды полей.

    Выбор кодировки

    Откройте вкладку Файл .

    В поле Имя файла введите имя нового файла.

    В поле Тип файла выберите Обычный текст .

    Если появится диалоговое окно Microsoft Office Word - проверка совместимости , нажмите кнопку Продолжить .

    В диалоговом окне Преобразование файла выберите подходящую кодировку.

    • Чтобы использовать стандартную кодировку, выберите параметр Windows (по умолчанию) .

      Чтобы использовать кодировку MS-DOS, выберите параметр MS-DOS .

      Чтобы задать другую кодировку, установите переключатель Другая и выберите нужный пункт в списке. В области Образец можно просмотреть текст и проверить, правильно ли он отображается в выбранной кодировке.

      Примечание: Чтобы увеличить область отображения документа, можно изменить размер диалогового окна Преобразование файла .

    Если появилось сообщение "Текст, выделенный красным, невозможно правильно сохранить в выбранной кодировке", можно выбрать другую кодировку или установить флажок Разрешить подстановку знаков .

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

    Если в выбранной кодировке нет эквивалентных знаков для символов, выделенных красным цветом, они будут сохранены как внеконтекстные (например, в виде вопросительных знаков).

    Если документ будет открываться в программе, в которой текст не переносится с одной строки на другую, вы можете включить в нем жесткие разрывы строк. Для этого установите флажок Вставлять разрывы строк и укажите нужное обозначение разрыва (возврат каретки (CR), перевод строки (LF) или оба значения) в поле Завершать строки .

    Поиск кодировок, доступных в Word

    Word распознает несколько кодировок и поддерживает кодировки, которые входят в состав системного программного обеспечения.

    Ниже приведен список письменностей и связанных с ними кодировок (кодовых страниц).

    Система письменности

    Кодировки

    Используемый шрифт

    Многоязычная

    Юникод (UCS-2 с прямым и обратным порядком байтов, UTF-8, UTF-7)

    Стандартный шрифт для стиля "Обычный" локализованной версии Word

    Арабская

    Windows 1256, ASMO 708

    Китайская (упрощенное письмо)

    GB2312, GBK, EUC-CN, ISO-2022-CN, HZ

    Китайская (традиционное письмо)

    BIG5, EUC-TW, ISO-2022-TW

    Кириллица

    Windows 1251, KOI8-R, KOI8-RU, ISO8859-5, DOS 866

    Английская, западноевропейская и другие, основанные на латинице

    Windows 1250, 1252-1254, 1257, ISO8859-x

    Греческая

    Японская

    Shift-JIS, ISO-2022-JP (JIS), EUC-JP

    Корейская

    Wansung, Johab, ISO-2022-KR, EUC-KR

    Вьетнамская

    Индийские: тамильская

    Индийские: непальская

    ISCII 57002 (деванагари)

    Индийские: конкани

    ISCII 57002 (деванагари)

    Индийские: хинди

    ISCII 57002 (деванагари)

    Индийские: ассамская

    Индийские: бенгальская

    Индийские: гуджарати

    Индийские: каннада

    Индийские: малаялам

    Индийские: ория

    Индийские: маратхи

    ISCII 57002 (деванагари)

    Индийские: панджаби

    Индийские: санскрит

    ISCII 57002 (деванагари)

    Индийские: телугу

      Для использования индийских языков необходима их поддержка в операционной системе и наличие соответствующих шрифтов OpenType.

      Для непальского, ассамского, бенгальского, гуджарати, малаялам и ория доступна только ограниченная поддержка.

    Наверное, каждый пользователь ПК сталкивался с подобной проблемой: открываешь интернет-страничку или документ Microsoft Word - а вместо текста видишь иероглифы (различные "крякозабры", незнакомые буквы, цифры и т.д. (как на картинке слева...)).

    Хорошо, если вам этот документ (с иероглифами) не особо важен, а если нужно обязательно его прочитать?! Довольно часто подобные вопросы и просьбы помочь с открытием подобных текстов задают и мне. В этой небольшой статье я хочу рассмотреть самые популярные причины появления иероглифов (разумеется, и устранить их).

    Иероглифы в текстовых файлах (.txt)

    Самая популярная проблема. Дело в том, что текстовый файл (обычно в формате txt, но так же ими являются форматы: php, css, info и т.д.) может быть сохранен вразличных кодировках.

    Кодировка - это набор символов, необходимый для того, чтобы полностью обеспечить написание текста на определенном алфавите (в том числе цифры и специальные знаки). Более подробно об этом здесь:https://ru.wikipedia.org/wiki/Набор_символов

    Чаще всего происходит одна вещь: документ открывается просто не в той кодировке из-за чего происходит путаница, и вместо кода одних символов, будут вызваны другие. На экране появляются различные непонятные символы (см. рис. 1)...

    Рис. 1. Блокнот - проблема с кодировкой

    Как с этим бороться?

    На мой взгляд лучший вариант - это установить продвинутый блокнот, например Notepad++ или Bred 3. Рассмотрим более подробно каждую из них.

    Notepad++

    Официальный сайт: https://notepad-plus-plus.org/

    Один из лучших блокнотов как для начинающих пользователей, так и для профессионалов. Плюсы: бесплатная программа, поддерживает русский язык, работает очень быстро, подсветка кода, открытие всех распространенных форматов файлов, огромное количество опций позволяют подстроить ее под себя.

    В плане кодировок здесь вообще полный порядок: есть отдельный раздел "Кодировки" (см. рис. 2). Просто попробуйте сменить ANSI на UTF-8 (например).

    После смены кодировки мой текстовый документ стал нормальным и читаемым - иероглифы пропали (см. рис. 3)!

    Официальный сайт: http://www.astonshell.ru/freeware/bred3/

    Еще одна замечательная программа, призванная полностью заменить стандартный блокнот в Windows. Она так же "легко" работает со множеством кодировок, легко их меняет, поддерживает огромное число форматов файлов, поддерживает новые ОС Windows (8, 10).

    Кстати, Bred 3 очень помогает при работе со "старыми" файлами, сохраненных в MS DOS форматах. Когда другие программы показывают только иероглифы - Bred 3 легко их открывает и позволяет спокойно работать с ними (см. рис. 4).

    Если вместо текста иероглифы в Microsoft Word

    Самое первое, на что нужно обратить внимание - это на формат файла. Дело в том, что начиная с Word 2007 появился новый формат - "docx" (раньше был просто "doc"). Обычно, в "старом" Word нельзя открыть новые форматы файлов, но случается иногда так, что эти "новые" файлы открываются в старой программе.

    Просто откройте свойства файла, а затем посмотрите вкладку "Подробно" (как на рис. 5). Так вы узнаете формат файла (на рис. 5 - формат файла "txt").

    Если формат файла docx - а у вас старый Word (ниже 2007 версии) - то просто обновите Word до 2007 или выше (2010, 2013, 2016).

    Далее при открытии файла обратите внимание (по умолчанию данная опция всегда включена, если у вас, конечно, не "не пойми какая сборка") - Word вас переспросит: в какой кодировке открыть файл (это сообщение появляется при любом "намеке" на проблемы при открытии файла, см. рис. 5).

    Рис. 6. Word - преобразование файла

    Чаще всего Word определяет сам автоматически нужную кодировку, но не всегда текст получается читаемым. Вам нужно установить ползунок на нужную кодировку, когда текст станет читаемым. Иногда, приходится буквально угадывать, в как был сохранен файл, чтобы его прочитать.

    Рис. 7. Word - файл в норме (кодировка выбрана верно)!

    Смена кодировки в браузере

    Когда браузер ошибочно определяет кодировку интернет-странички - вы увидите точно такие же иероглифы (см. рис 8).

    Чтобы исправить отображение сайта: измените кодировку. Делается это в настройках браузера:

  • Google chrome: параметры (значок в правом верхнем углу)/дополнительные параметры/кодировка/Windows-1251 (или UTF-8);
  • Firefox: левая кнопка ALT (если у вас выключена верхняя панелька), затем вид/кодировка страницы/выбрать нужную (чаще всего Windows-1251 или UTF-8);
  • Opera: Opera (красный значок в верхнем левом углу)/страница/кодировка/выбрать нужное.
  • Таким образом в этой статье были разобраны самые частые случаи появления иероглифов, связанных с неправильно определенной кодировкой. При помощи выше приведенных способов - можно решить все основные проблемы с неверной кодировкой.

    Внимание!!! Приготовьтесь, статья будет длинной. Можно устать и уснуть, поэтому сядьте поудобнее, возьмите чашечку кофе и начнем.


    Изучение китайских иероглифов - это важная часть изучения самого языка. Существует множество способов, средств и идей о том, как их изучать. В этой статье речь пойдет о некоторых из них. Разные люди, в зависимости от своих целей, учат их по-разному.
    Например, кто-то хочет просто знать определенное количество знаков. Другие хотят читать текст на иероглифах. Иные желают не только читать, но и уметь писать иероглифы. А еще есть те, кто собирается делать записи по - китайски или писать тексты. Опять же, писать от руки, потому что набирать их компьютерным способом намного проще.
    Стоит отметить, что современная занятость человека не позволяет в полной мере окунуться в процесс учебы без отвлечений. Особенно трудно тем, кто изучает язык самостоятельно и "когда получится". Подобрать способ изучения иероглифов стоит индивидуально. Тем, кто ограничен во времени наверняка хочется найти удобное приложение для своего девайса, чтобы в свободную минуту "погрызть гранит науки". Ну а для тех, кто учит язык как специальность должно подойти все, но кто же не хочет сократить сроки на приобретение навыков?
    Добавлю, что выучить иероглиф может для разных людей означать разное. В полном смысле выучить иероглиф значит знать его произношение, написание и значение. Итак, какими же способами можно развить все эти навыки и освоить китайские иероглифы? Начнем с бумажных, потом электронные.

    1. Прописывание иероглифов. Традиционный способ изучения иероглифов, опробованный миллионами китайцев. Нужно помнить, что они прописывают иероглифы в течение всего курса школы. Это далеко не пара лет. Итак, плюсы метода:
    - задействована зрительная, мышечная память;
    - вырабатывается навык письма, почерк;
    - изучение иероглифов в произвольном порядке;
    - возможность вернуться к написанному сразу;
    - другие.

    Из минусов можно выделить:
    - требуется бумага и орудие письма;
    - требуется немало времени на прописывание одного иероглифа;
    - нужно хранить много бумаги;
    - нужно место и время для качественного подхода к упражнениям.
    - другие.

    Прописывать иероглифы можно в обычной тетради обычной ручкой. Те, кто основательнее подходят к этому, прописывают в специальных прописях. О том, как писать иероглифы, а также о примерах элементарных прописей, была . Более продвинутый метод прописывания - это прописывание по шаблонам. Они тоже бывают разными.

    1. Шаблон. Выглядеть может по-разному, но суть одна. Поверх текста наложена калька, по которой и прописываются иероглифы. Проблема в том, что в таком шаблоне нет произношения иероглифов, то есть тренируется только распознавание знакомых и каллиграфия.


    2. Шаблон. Прописывание происходит по указанной последовательности черт. Приводится и значение иероглифов. Произношение остается за кадром.

    3. Есть и другие прописи, долго описывать. Вот ссылки, можно скачать и распечатать.

    2. Ассоциативный метод .

    Суть метода проста. Придумать на что похож иероглиф и связать каким-либо образом этот образ со значением и произношением иероглифа. Была . Можно записать все ассоциации в тетрадь и возвращаться к ним для повторения.
    Сюда же можно включить освоение иероглифов с помощью ключей. Разница в том, что ассоциации станут не абстрактными, а конкретными. Но сначала нужно освоить ключи. Писал об этом в этой статье , а еще было и в этой статье . Можно комбинировать ассоциации и прописывание иероглифов. Но тоже времени требуется немало. Зато надолго запоминается.
    Еще об этом, с другой стороны, было в этой статье .

    3. Карточки.

    Они же флеш-карты. Суть в том, что на карточках пишутся или просто распечатываются иероглифы. На обратной стороне их значение, произношение, либо и то и это. Не всем помогает, занимает место, требует кучу времени на классификацию, и желательно хорошую зрительную память. Вот несколько моих старых коллекций:


    Кстати, некоторым помогает, когда они учат по программу из учебников, в которых приводятся последовательности написания иероглифов. Это могут быть учебники Задоенко, Кондрашевского и др.


    Наверное. опытный студент китайского языка сможет привести еще и другие "бумажные" способы освоения и запоминания иероглифов. Но я решил пока остановиться на том, что изложено выше. Перейдем к электронным.

    1. Флеш-карты .

    Народ понял, что несколько тысяч иероглифов - это большой объем карточек. Целый ящик! Можно и в электронном виде их делать. Создали всякие программы, которые на разных платформах воспроизводят эти карточки.

    Кого интересует такой способ, стоит познакомиться с программой . Тоже на любителя. Интервальное повторение картинок также связано с зрительной памятью. Не всем одинаково хорошо дается. Зато не только японский и китайский можно учить. К тому же, приложение доступно для разных платформ.

    Есть и другие приложения такого же характера. Вот, например, на сайте "Магазета" приводилось одно такое приложение: ссылка на сатью .

    2. Процессоры иероглифов .

    Когда-то пробовал знакомиться с иероглифами с помощью программы NJStar. Особо не помогло, но кто-то может найти ей полезное применение на своем компьютере. Вот . В этой программе можно вводить иероглифы мышью.

    3. Онлайн переводчики .

    В переводчике Гугл есть функция ввода с помощью тачскрина. Там можно прописывать пальцем иероглифы прямо на вашем мобильном девайсе. Требуется интернет. Нет четкой программы запоминания, просто возможность писать не на бумаге. То же самое касается ввода мышью иероглифов в интернет словарях, таких как www.bkrs.info . Рядом со строкой поиска есть кнопка ручного ввода, ее иногда не видно из-за темы вокруг строки, но она точно есть с правой. Можно вводить мышью иероглиф и смотреть его значение, иногда и слушать произношение. Избавляет от прописывания на бумаге.

    4. Другие программы .

    На просторах интернета можно найти и другой софт. Я не тестировал всего, поэтому не смогу описать многое. Но хочу сказать пару слов про систему МАО. Мне не понравился подход к запоминанию иероглифов, но я все же решил привести ее в этой статье, так как есть приложение "МАОcard". Да и кто-то может оценить эту систему выше меня. Ссылка...

    Продолжаем...

    Можно еще всякого написать об этом, но в целях экономии хотя бы своего времени приведу ссылку на страницу с Магазеты , где автор приводит целую кучу полезного софта для разных платформ. Есть среди всего и приложения для изучения и повторения иероглифов. Но я хотел бы все же выделить, что одно дело иероглифы повторять или вспоминать, и совсем другое - запоминать. Кажется, это имеет смысл, когда либо знаешь слова, но не умеешь читать, либо учишь сразу и слова, и иероглифы. Для этих целей подходят специальные приложения.

    Я бы хотел отдельно упомянуть приложение для платформы Андроид "Chineseskill" . Оно развивается и, на мой взгляд, сочетает в себе много достоинств. Изучение иероглифов идет параллельно с изучением лексики и грамматики. Писать и произносить слова придется . Иногда вручную, пальцем. Может это то, что Вам нужно?..

    Другим приложением, которое я советую для изучающих китайский и,в частности, иероглифы, является приложение "Chinese Writer". Я уже делал краткое описание этого приложения . Но скажу, что даже при наличии нескольких неудобств, типа бегущей строки в нижней части экрана с информацией о иероглифе, приложение отличное. Иероглифы можно посмотреть, поучиться их писать, проверить себя в игре, и другое. На мой взгляд, надо иметь такое в своем девайсе... Есть платная и бесплатная версии.

    Заключение.

    В заключение скажу, что не смог бы всего перечислить, что стояло на моем смартфоне и планшете. Я пробовал разные программы, но увы - нет идеальной. А может я не нашел пока. Но то, что я перечислил выше стоит попробовать. Так или иначе, все это лишь средства ввести иероглифы в свою память. А вот как она их воспримет, захочет ли потом назад их выдавать - это уже другой вопрос. Поэтому, кроме изучения самих иероглифов, рекомендую хорошо высыпаться и тренировать память. Спасибо, что дочитали до конца, теперь ваше представление о вопросе, наверняка, шире.

    Кракозябры - что за слово такое интересное? Этим словом обычно русские пользователи называют неправильное/неверное отображение (кодировку) символов в программах или самой Операционной Системы.
    Почему такое случается? Однозначного ответа Вы не найдёте. Это может быть в следствии проделок наших "любимых" вирусов, может из-за сбоя работы ОС Windows (например пропало электричество и выключился компьютер), может программа создала конфликт с другой или ОС и всё "полетело". В общем причин может быть много, а самая интересная - это "Оно само вот так взяло и сломалось".
    Читаем статью и узнаём как исправить проблему с кодировкой в программах и ОС Windows, раз уж она случилась.

    Кто до сих пор не понял о чём я имею ввиду, вот вам несколько :


    Кстати, я тоже попал однажды в эту ситуацию и до сих пор на Рабочем столе лежит файл, который помог мне справится с ней. Поэтому и решил написать данную статью.

    За отображение кодировки (шрифта) в Windows отвечает несколько "вещей" - это язык, реестр и файлы самой ОС. Теперь будем их проверять по отдельности и по пунктам.

    Как убрать и исправить кракозябры вместо русского (русских букв) в программе или Windows.

    1. Проверяем установленный язык для программ, не поддерживающих Юникод. Может он у Вас сбился.

    Итак, переходим по пути: Панель управления - Язык и региональные стандарты - вкладка Дополнительно
    Там смотрим чтобы язык был Русский.


    В Windows XP помимо этого внизу есть список "Кодовые страницы таблиц преобразования" и в нём есть строчка с цифрой 20880 . Нужно чтобы там тоже был Русский

    6. Последний пункт, в котором я даю Вам файл, который помог мне всё исправить когда-то и именно поэтому я его оставил на память. Вот архив:

    Внутри два файла: кракозбрoff.cmd и кракозбрoff.reg

    Принцип у них одинаковый - исправить всеми способами иероглифы, квадратики, вопросы или восклицательные знаки в програмах и ОС Windows (в простонародье кракозябры ). Я пользовался первым и мне помогло.

    Ну и напоследок пара советов:
    1) Если работаете с реестром, то не забывайте делать бэкап (резервную копию) на тот случай, если что-то пойдёт не так.
    2) Желательно после каждого пункта проверять 1ый пункт.

    На этом всё. Теперь Вы знаете как исправить убрать/исправить Кракозябры (квадратики, иероглифы, восклицательные и вопросительные знаки) в программе или Windows.

    Думаю, ты не раз встречал эксплойты, которые классифицируются как Unicode, подыскивал нужную кодировку для отображения страницы, радовался очередным кракозябрам то тут, то там. Да мало ли чего еще! Если ты хочешь узнать, кто заварил всю эту кашу, и расхлебывает по сей день, пристегни ремни и читай дальше.

    Как говорится, - «инициатива наказуема» и, как всегда, виноваты во всем оказались американцы.

    А дело было так. На заре расцвета компьютерной индустрии и распространения интернета появилась необходимость в универсальной системе представления символов. И в 60 годах прошлого века появляется ASCII - «American Standard Code for Information Interchange» (Американский Стандартный Код для Обмена Информацией), знакомая нам 7-битная кодировка символов. Последний восьмой неиспользованный бит был оставлен как управляющий бит для настройки ASCIIтаблицы под свои нужды каждого заказчика компьютера отдельного региона. Такой бит позволял расширить ASCII-таблицу для использования своих символов каждого языка. Компьютеры поставлялись во многие страны, где уже и использовали свою, модифицированную таблицу. Но позже такая фича переросла в головную боль, так как обмен данными между ЭВМ стал достаточно проблематичным. Новые 8-битные кодовые страницы были несовместимы между собой - один и тот же код мог означать несколько разных символов. Для разрешения этой проблемы ISO («International Organization for Standardization», Международная Организация по Стандартизации) предложила новую таблицу, а именно - «ISO 8859».

    Позже этот стандарт переименовали в UCS («Universal Character Set», Универсальный Набор Символов). Однако, к моменту первого выпуска UCS появился Unicode. Но так как цели и задачи обоих стандартов совпадали, было принято решение объединить усилия. Что ж, Unicode взял на себя нелегкую задачу - дать каждому символу уникальное обозначение. На данный момент последняя версия Unicode - 5.2.

    Хочу предупредить - на самом-то деле история с кодировками весьма мутная. Разные источники предоставляют разные факты, так что не стоит зацикливаться на одном, достаточно быть в курсе того, как все образовывалось и следовать современным стандартам. Мы ведь, надеюсь, не историки.

    Краш-курс unicode

    Прежде чем углубляться в тему, хотелось бы пояснить, что представляет собой Unicode в техническом плане. Цели данного стандарта мы уже знаем, осталось лишь матчасть подлатать.

    Итак, что есть Unicode? Проще говоря - это способ представить любой символ в виде определенного кода для всех языков мира. Последняя версия стандарта вмещает порядка 1 100 000 кодов, которые занимают пространство от U+0000 до U+10FFFF. Но тут будь внимателен! Unicode строго определяет то, что есть код для символа и то, как этот код будет представлен в памяти. Коды символов (допустим, 0041 для символа «A») не имеют какоголибо значения, а вот для представления этих кодов байтами есть своя логика, этим занимаются кодировки. Консорциум Unicode предлагает следующие виды кодировок, называемые UTF (Unicode Transformation Formats, «Форматы Преобразования Unicode»). А вот и они:

    • UTF-7: данную кодировку не рекомендуется использовать из соображений безопасности и совместимости. Описана в RFC 2152. Не является частью Unicode, однако была представлена данным консорциумом.
    • UTF-8: самая распространенная кодировка в веб-пространстве. Является переменной, шириной от 1 до 4 байт. Обратно совместима со протоколами и программами, использующими ASCII. Занимает пределы от U+0000 до U+007F.
    • UTF-16: использует переменную ширину от 2 до 4 байт. Чаще всего встречается применение 2 байт. UCS-2 является этой же кодировкой, только с фиксированной шириной 2 байта и ограничено пределами BMP.
    • UTF-32: использует фиксированную ширину в 4 байта, то есть 32 бита. Однако используется только 21 бит, остальные 11 забиты нулями. Пусть данная кодировка и громоздка в плане пространства, но считается наиболее эффективной по быстродействию за счет 32-битной адресации в современных компьютерах.

    Ближайший аналог UTF-32 - кодировка UCS-4, но сегодня используется реже.

    Несмотря на то, что в UTF-8 и UTF-32 можно представить чуть больше двух миллиардов символов, было принято решение ограничиться миллионом с хвостиком - ради совместимости с UTF-16. Все пространство кодов сгруппировано в 17 плоскостей, где в каждой по 65536 символов. Наиболее часто употребляемые символы расположены в нулевой, базовой плоскости. Именуется как BMP - Basic MultiPlane.
    Поток данных в кодировках UTF-16 и UTF-32 может быть представлен двумя способами - прямым и обратным порядком байтов, называются UTF-16LE/UTF-32LE, UTF16BE/UTF-32BE, соответственно. Как ты и догадался, LE - это little-endian, а BE - big-endian. Но надо как-то уметь различать эти порядки. Для этого используют метку порядка байтов U+FEFF, в английском варианте - BOM, «Byte Order Mask». Данный BOM может попадаться и в UTF-8, но там он ничего не значит.

    Ради обратной совместимости Юникоду пришлось вместить в себя символы существующих кодировок. Но тут возникает другая проблема - появляется много вариантов идентичных символов, которые как-то нужно обрабатывать. Поэтому нужна так называемая «нормализация», после которой уже можно сравнить две строки. Всего существует 4 формы нормализации:

    • Normalization Form D (NFD): каноническая декомпозиция.
    • Normalization Form C (NFC): каноническая декомпозиция + каноническая композиция.
    • Normalization Form KD (NFKD): совместимая декомпозиция.
    • Normalization Form KC (NFKC): совместимая декомпозиция + каноническая композиция.

    Теперь подробнее про эти странные слова.

    Юникод определяет два вида равенств строки - каноническая и по совместимости.

    Первое предполагает разложение сложного символа на несколько отдельных фигур, которые в целом образуют исходный символ. Второе равенство подыскивает ближайший подходящий по виду символ. А композиция - это объединение символов из разных частей, декомпозиция - обратное действие. В общем, глянь на рисунок, все станет на место.

    В целях безопасности нормализацию следует делать до того, как строка поступит на проверку каким-либо фильтрам. После данной операции размер текста может меняться, что может иметь негативные последствия, но об этом чуть позже.

    В плане теории на этом все, я многое еще не рассказал, но надеюсь ничего важного не упустил. Unicode невообразимо обширен, сложен, по нему выпускают толстые книги, и очень нелегко сжато, доступно и полноценно объяснить основы столь громоздкого стандарта. В любом случае, для более глубокого понимания следует пройтись по боковым ссылкам. Итак, когда картина с Юникодом стала более-менее ясна, можем ехать дальше.

    Зрительный обман

    Наверняка ты слышал про IP/ARP/DNSспуфинг и хорошо представляешь, что это такое. Но есть еще так называемый «визуальный спуфинг» - это тот самый старый метод, которым активно пользуются фишеры для обмана жертв. В таких случаях применяют использование схожих букв, наподобие «o» и «0», «5» и «s». Это наиболее распространенный и простой вариант, его и легче заметить. Как пример можно привести фишинг-атаку 2000 года на PayPal, о которой даже упомянуто на страницах www.unicode.org . Однако к нашей теме Юникода это мало относится.

    Для более продвинутых ребят на горизонте появился Unicode, а точнее - IDN, что является аббревиатурой от «Internationalized Domain Names» (Интернационализованные Доменные Имена). IDN позволяет использовать символы национального алфавита в доменных именах. Регистраторы доменных имен позиционируют это как удобную вещь, мол, набирай доменное имя на своем родном языке! Однако, удобство это весьма сомнительное. Ну да ладно, маркетинг - не наша тема. Зато представь, какое это раздолье для фишеров, сеошников, киберсквоттеров и прочей нечисти. Я говорю об эффекте, что называется IDN-спуфинг. Данная атака относится к категории визуального спуфинга, в английской литературе это еще называют как «homograph attack», то есть, атаки с использованием омографов (слов, одинаковых в написании).

    Да, при наборе букв никто не ошибется и не наберет заведомо ложный домен. Но ведь чаще всего пользователи щелкают по ссылкам. Если хочешь убедиться в эффективности и простоте атаки, то посмотри на картинку.

    В качестве некоторой панацеи был придуман IDNA2003, но уже в этом, 2010 году, вступил в силу IDNA2008. Новый протокол должен был решить многие проблемы молодого IDNA2003, однако внес новые возможности для спуфинг-атак. Снова возникают проблемы совместимости - в некоторых случаях один и тот же адрес в разных браузерах может вести на разные сервера. Дело в том, что Punycode может преобразован по-разному для разных браузеров - все будет зависеть от того, спецификации какого стандарта поддерживаются.
    Проблема зрительного обмана на этом не заканчивается. Unicode и тут приходит на службу спамерам. Речь про спам-фильтры - исходные письма прогоняются спамерами через Unicode-обфускатор, который подыскивает схожие между собой символы разных национальных алфавитов по так называемому UC-Simlist («Unicode Similarity List», список схожих символов Unicode). И все! Антиспам фильтр пасует и уже не может в такой каше символов распознать нечто осмысленное, зато юзер вполне способен прочитать текст. Не отрицаю, что решение для такой проблемы нашли, однако флаг первенства за спамерами. Ну и еще кое-что из этой же серии атак. Ты точно уверен, что открываешь некий текстовый файл, а не имеешь дело с бинарником?

    На рисунке, как видишь, имеем файл с названием evilexe. txt. Но это фальш! Файл на самом-то деле называется eviltxt.exe. Спросишь, что это еще за фигня в скобках? А это, U+202E или RIGHT-TO-LEFT OVERRIDE, так называемый Bidi (от слова bidirectional) - алгоритм Юникода для поддержки таких языков, как арабский, иврит и прочих. У последних ведь письменность справа налево. После вставки символа Юникода RLO, все, что идет после RLO, мы увидим в обратном порядке. Как пример данного метода из реальной жизни могу привести спуфинг-атаку в Mozilla Firfox - cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3376 .

    Обход фильтров - этап № 1

    На сегодня уже известно, что нельзя обрабатывать длинные формы (non-shortest form) UTF-8, так как это является потенциальной уязвимостью. Однако разработчиков PHP этим не вразумить. Давай разберемся, что собой представляет данный баг. Возможно ты помнишь про неправильную фильтрацию и utf8_decode(). Вот этот случай мы и рассмотрим более детально. Итак, мы имеем такой PHP-код: