Кодировка файлов

Содержание

FoxTools v.2.0

Привет, Гость! Ваш IP: 188.64.174.135

Универсальный декодер текста

Что такое кодировка?

Кодировка (кодовая страница) – это набор байт, соответствующий печатному символу. Это правила по которым компьютер представляет текстовые данные пользователю.

В разных странах и системах могут использоваться разные кодовые страницы.

Для кодирования русскоязычных текстов используются кодировки: Windows-1251, KOI8, MacCyrillic, а также универсальная таблица символов — Юникод (UTF-8).

Только популярные кодировки или все?

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

Сайт построен на HTML5

Для корректной работы данного сайта требуется HTML5.

Пожалуйста, воспользуйтесь браузером, который поддерживает HTML5. Многие современные браузеры поддерживают HTML5. Например:

Recoder v2.2.1 (BOM-remover)

Небольшая программа для массового (пакетного) перекодирования файлов из одной кодировки в другую. Доступные кодировки windows-1251, koi8-r, cp866, ISO 8859-5, utf-8, utf-8 с BOM-заголовком. Также умеет искать и удалять BOM-заголовок в файлах и каталогах.

Текущая версия:

Предыдущие версии:

  • v2.1.1: Windows (7.2 MB) , Linux (48.8 kB)
  • v2.1: Windows (8.2 MB) , Linux (48.5 kB)
  • v2.0: Windows (7.9 MB)

Скриншоты

© 2020 Антон Прибора. При копировании материалов с сайта, пожалуйста, указывайте ссылку на источник.

Кодировка файлов

О превосходстве кодировки utf-8 над windows-1251 я уже слышал давно, но не предавал этому значения, так как проблем с отображением текста web страниц ни когда не возникало.
Вернее, проблемы-то были, но они всегда решались одним из трёх верных способов, о которых и пойдёт речь.

Кодировка utf-8

UTF-8 (от англ. Unicode Transformation Format — формат преобразования Юникода) — в настоящее время распространённая кодировка, реализующая представление Юникода, совместимое с 8-битным кодированием текста. Нашла широкое применение в операционных системах и веб пространстве. В Unicode насчитывается свыше 100 000 символов.

Кодировка Windows-1251 (синоним CP1251)

Windows-1251 — набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows. Пользуется довольно большой популярностью. Windows-1251 выгодно отличается от других 8‑битных кириллических кодировок (таких как CP866, KOI8-R и ISO 8859-5) наличием практически всех символов, использующихся в русской типографии для обычного текста (отсутствует только значок ударения); она также содержит все символы для близких к русскому языку языков: украинского, белорусского, сербского и болгарского. Общее количество символов порядка — 256 шт.

Отличие кодировок

Главное отличие кодировок — это количество символов и здесь явно лидирует UTF-8.
Наверно, единственный плюс кодировки windows-1251 – она однобайтовая, следовательно, занимает меньший объём. Но сегодня, когда дисковое пространство измеряется гига-тера-байтами, вряд ли, кто-то будет считать байты.
И еще одно обстоятельство, которое меня окончательно убедило использовать кодировку UTF-8 – это технология AJAX, которая не поддерживает windows-1251.
Так, что если Вы еще не определились, какую кодировку использовать для Ваших web страниц, то советую остановиться на Юникоде (UTF-8), что бы в дальнейшем не пришлось переводить весь сайт с кодировки windows-1251 на utf-8.

Перекодировка файлов в utf-8 в три шага

  1. Кодировка страниц.

Для того, что бы сменить кодировку страницы, необходимо открыть файл в Adobe Dreamweaver и в окне «свойства страницы» установить нужную кодировку и нажать OK.

Ни каких галочек BOM ставить не надо.

Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа,
сохраняемого как UTF-8. Это метка порядка байтов Юникода (англ. Byte Order Mark, BOM), также её часто
называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature). По наличию сигнатуры программы могут
автоматически определить, является ли файл закодированным в UTF-8, однако файлы с такой сигнатурой
могут некорректно обрабатываться старыми программами, в частности xml-анализаторами.

Можно так же использовать текстовый редактор NotePad++,

Dreamweaver это делает автоматически.

А что же делать, если вы наклепали сотню другую html — файлов, прежде чем узнали о превосходстве кодировки UTF-8?

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

Думаю, с этой проблемой сталкиваются многие начинающие web мастера (скажу честно, я не исключение). Поэтому и выкладываю решение данной задачи.

Меняем кодировку текста у всех HTML файлов в одной директории (папке).

Затем отправляем этот файл на сервер в ту папку, где находятся HTML страницы в кодировке Windows-1251
Теперь остаётся только открыть файл «recode.php» в любом удобном для вас браузере и нажать кнопку.

Через секунду или две все файлы с разрешением .html и .htm поменяют кодировку с windows-1251 на utf-8.

А в конфигурационный файл «.htaccess» пропишется кодировка по умолчанию UTF-8.
Хочу заметить, что это всё возможно только при поддержке сервером технологии PHP.

Настройка кодировки по умолчанию для сервера.

Для настройки сервера необходимо создать (если файла нет) в любом текстовом редакторе файл с именем .htaccess (с точкой в начале).
Прописать в нем одну строку:

И сохранить файл в корневой директории (там же где и index).

.htaccess (от. англ. hypertext access) — файл дополнительной конфигурации веб-сервера Apache,
а также подобных ему серверов. Позволяет задавать большое количество дополнительных
параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких
как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения
главного конфигурационного файла.

Кодировка базы данных MySQL.
Для отображения правильного, читабельного текста в таблицах базы данных, а так же при выводе данных на веб страницу необходимо полное соответствие кодировок.
Решается это внесением дополнительной строки перед закрывающемся тегом ?> в PHP код подключения к базе данных:

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

Программное определение кодировки текстового файла из заданного списка

Задача нетривиальная: написать программу на C/C++ («чистом»), на вход которой подается путь к файлу, на выходе — кодировка этого файла с указанием точности: точно или наиболее вероятно. (содержит буквы английского и/или русского языков, и пр. символы; в файле может быть исходник программы на одном из языков программирования).

Список требуемых к распознаванию кодировок: simple ASCII, CP1251 (windows 1251), ISO8859-5, CP866, KOI8-R, UTF8, UTF16-LE, UTF16-BE, UTF32-LE, UTF32-BE, UCS-2 . Ошибки: кодировка undefined или файл бинарный ( unreadable ).

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

Существуют BOM ( Byte Order Mark ) для UTF8 (может не быть), для UTF16LE(BE) , UTF32LE(BE) , по которым их легко можно определить, но в таком случае возникает тонкая грань между UCS-2 и UTF-16 — возникает проблема в их различении.

Имеются неполные решения задачи: команда file -i [path] для UNIX (есть порт для WIN ), которая по специальной таблице встречаемости кодов символов в разных кодировках умеет определять ASCII , ISO8859-5 (которую путает с Win-1251 ), UTF8, UTF16, EBCDIC , но 8-битные non-ISO кодировки именует 8-bit unknown .

По каким признакам можно отличить KOI8-R, WIN-1251, ISO8859-5, CP866, ASCII (т.е. все однобайтовые в данном случае)? UCS-2 = UTF16 без «суррогатных пар».

Существует также утилита ENCA для UNIX , которая умеет определять кодировки в более широком диапазоне, но принцип работы ее непонятен.

Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юникод (UTF 8, 16, 32) — как исправить проблему с кракозябрами

Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Сегодня мы поговорим с вами про то, откуда берутся кракозябры на сайте и в программах, какие кодировки текста существуют и какие из них следует использовать. Подробно рассмотрим историю их развития, начиная от базовой ASCII, а также ее расширенных версий CP866, KOI8-R, Windows 1251 и заканчивая современными кодировками консорциума Юникод UTF 16 и 8.

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

ASCII — базовая кодировка текста для латиницы

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

Но все же отправной точкой для развития современных кодировок текстов стоит считать знаменитую ASCII (American Standard Code for Information Interchange, которая по-русски обычно произносится как «аски»). Она описывает первые 128 символов из наиболее часто используемых англоязычными пользователями — латинские буквы, арабские цифры и знаки препинания.

Еще в эти 128 знаков, описанных в ASCII, попадали некоторые служебные символы навроде скобок, решеток, звездочек и т.п. Собственно, вы сами можете увидеть их:

Именно эти 128 символов из первоначального вариант ASCII стали стандартом, и в любой другой кодировке вы их обязательно встретите и стоять они будут именно в таком порядке.

Но дело в том, что с помощью одного байта информации можно закодировать не 128, а целых 256 различных значений (двойка в степени восемь равняется 256), поэтому вслед за базовой версией Аски появился целый ряд расширенных кодировок ASCII, в которых можно было кроме 128 основных знаков закодировать еще и символы национальной кодировки (например, русской).

Тут, наверное, стоит еще немного сказать про системы счисления, которые используются при описании. Во-первых, как вы все знаете, компьютер работает только с числами в двоичной системе, а именно с нулями и единицами («булева алгебра», если кто проходил в институте или в школе). Один байт состоит из восьми бит, каждый из которых представляет из себя двойку в степени, начиная с нулевой, и до двойки в седьмой:

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

Илон Маск рекомендует:  Что такое код getnextdlgtabitem

В нашем примере это получается 1 (2 в степени ноль) плюс 8 (два в степени 3), плюс 32 (двойка в пятой степени), плюс 64 (в шестой), плюс 128 (в седьмой). Итого получает 233 в десятичной системе счисления. Как видите, все очень просто.

Но если вы присмотритесь к таблице с символами ASCII, то увидите, что они представлены в шестнадцатеричной кодировке. Например, «звездочка» соответствует в Аски шестнадцатеричному числу 2A. Наверное, вам известно, что в шестнадцатеричной системе счисления используются кроме арабских цифр еще и латинские буквы от A (означает десять) до F (означает пятнадцать).

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

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

Расширенные версии Аски — кодировки CP866 и KOI8-R с псевдографикой

Итак, мы с вами начали говорить про ASCII, которая являлась как бы отправной точкой для развития всех современных кодировок (Windows 1251, юникод, UTF 8).

Изначально в нее было заложено только 128 знаков латинского алфавита, арабских цифр и еще чего-то там, но в расширенной версии появилась возможность использовать все 256 значений, которые можно закодировать в одном байте информации. Т.е. появилась возможность добавить в Аски символы букв своего языка.

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

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

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

Значит, чтобы закодировать любой нужный нам символ (например, из национального алфавита), должно быть выполнено два условия — векторная форма этого знака должна быть в используемом шрифте и этот символ можно было бы закодировать в расширенных кодировках ASCII в один байт. Поэтому таких вариантов существует целая куча. Только лишь для кодирования символов русского языка существует несколько разновидностей расширенной Аски.

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

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

Видите, в правом столбце цифры начинаются с 8, т.к. числа с 0 до 7 относятся к базовой части ASCII (см. первый скриншот). Т.о. русская буква «М» в CP866 будет иметь код 9С (она находится на пересечении соответствующих строки с 9 и столбца с цифрой С в шестнадцатеричной системе счисления), который можно записать в одном байте информации, и при наличии подходящего шрифта с русскими символами эта буква без проблем отобразится в тексте.

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

CP866 распространяла компания IBM, но кроме этого для символов русского языка были разработаны еще ряд кодировок, например, к этому же типу (расширенных ASCII) можно отнести KOI8-R:

Принцип ее работы остался тот же самый, что и у описанной чуть ранее CP866 — каждый символ текста кодируется одним единственным байтом. На скриншоте показана вторая половина таблицы KOI8-R, т.к. первая половина полностью соответствует базовой Аски, которая показана на первом скриншоте в этой статье.

Среди особенностей кодировки KOI8-R можно отметить то, что русские буквы в ее таблице идут не в алфавитном порядке, как это, например, сделали в CP866.

Если посмотрите на самый первый скриншот (базовой части, которая входит во все расширенные кодировки), то заметите, что в KOI8-R русские буквы расположены в тех же ячейках таблицы, что и созвучные им буквы латинского алфавита из первой части таблицы. Это было сделано для удобства перехода с русских символов на латинские путем отбрасывания всего одного бита (два в седьмой степени или 128).

Windows 1251 — современная версия ASCII и почему вылезают кракозябры

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

Они относились к так называемым ANSI кодировкам, которые были разработаны американским институтом стандартизации. В просторечии еще использовалось название кириллица для варианта с поддержкой русского языка. Примером такой может служить Windows 1251.

Она выгодно отличалась от используемых ранее CP866 и KOI8-R тем, что место символов псевдографики в ней заняли недостающие символы русской типографики (окромя знака ударения), а также символы, используемые в близких к русскому славянских языках (украинскому, белорусскому и т.д.):

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

Очень часто они вылезали при отправке и получении сообщений по электронной почте, что повлекло за собой создание очень сложных перекодировочных таблиц, которые, собственно, решить эту проблему в корне не смогли, и зачастую пользователи для переписки использовали транслит латинских букв, чтобы избежать пресловутых кракозябров при использовании русских кодировок подобных CP866, KOI8-R или Windows 1251.

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

Допустим, если символы, закодированные с помощью CP866, попробовать отобразить, используя кодовую таблицу Windows 1251, то эти самые кракозябры (бессмысленный набор знаков) и вылезут, полностью заменив собой текст сообщения.

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

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

Юникод (Unicode) — универсальные кодировки UTF 8, 16 и 32

Эти тысячи знаков языковой группы юго-восточной Азии никак невозможно было описать в одном байте информации, который выделялся для кодирования символов в расширенных версиях ASCII. В результате был создан консорциум под названием Юникод (Unicode — Unicode Consortium) при сотрудничестве многих лидеров IT индустрии (те, кто производит софт, кто кодирует железо, кто создает шрифты), которые были заинтересованы в появлении универсальной кодировки текста.

Первой вариацией, вышедшей под эгидой консорциума Юникод, была UTF 32. Цифра в названии кодировки означает количество бит, которое используется для кодирования одного символа. 32 бита составляют 4 байта информации, которые понадобятся для кодирования одного единственного знака в новой универсальной кодировке UTF.

В результате чего, один и тот же файл с текстом, закодированный в расширенной версии ASCII и в UTF-32, в последнем случае будет иметь размер (весить) в четыре раза больше. Это плохо, но зато теперь у нас появилась возможность закодировать с помощью ЮТФ число знаков, равное двум в тридцать второй степени (миллиарды символов, которые покроют любое реально необходимое значение с колоссальным запасом).

Но многим странам с языками европейской группы такое огромное количество знаков использовать в кодировке вовсе и не было необходимости, однако при задействовании UTF-32 они ни за что ни про что получали четырехкратное увеличение веса текстовых документов, а в результате и увеличение объема интернет трафика и объема хранимых данных. Это много, и такое расточительство себе никто не мог позволить.

В результате развития Юникода появилась UTF-16, которая получилась настолько удачной, что была принята по умолчанию как базовое пространство для всех символов, которые у нас используются. Она использует два байта для кодирования одного знака. Давайте посмотрим, как это дело выглядит.

В операционной системе Windows вы можете пройти по пути «Пуск» — «Программы» — «Стандартные» — «Служебные» — «Таблица символов». В результате откроется таблица с векторными формами всех установленных у вас в системе шрифтов. Если вы выберете в «Дополнительных параметрах» набор знаков Юникод, то сможете увидеть для каждого шрифта в отдельности весь ассортимент входящих в него символов.

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

Сколько символов можно закодировать в UTF-16 с помощью 16 бит? 65 536 (два в степени шестнадцать), и именно это число было принято за базовое пространство в Юникоде. Помимо этого существуют способы закодировать с помощью нее и около двух миллионов знаков, но ограничились расширенным пространством в миллион символов текста.

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

Вот именно для удовлетворения всех и вся в консорциуме Unicode было решено придумать кодировку переменной длины. Ее назвали UTF-8. Несмотря на восьмерку в названии, она действительно имеет переменную длину, т.е. каждый символ текста может быть закодирован в последовательность длиной от одного до шести байт.

Илон Маск рекомендует:  Как верстать на HTML5 и CSS3

На практике же в UTF-8 используется только диапазон от одного до четырех байт, потому что за четырьмя байтами кода ничего уже даже теоретически не возможно представить. Все латинские знаки в ней кодируются в один байт, так же как и в старой доброй ASCII.

Что примечательно, в случае кодирования только латиницы, даже те программы, которые не понимают Юникод, все равно прочитают то, что закодировано в ЮТФ-8. Т.е. базовая часть Аски просто перешла в это детище консорциума Unicode.

Кириллические же знаки в UTF-8 кодируются в два байта, а, например, грузинские — в три байта. Консорциум Юникод после создания UTF 16 и 8 решил основную проблему — теперь у нас в шрифтах существует единое кодовое пространство. И теперь их производителям остается только исходя из своих сил и возможностей заполнять его векторными формами символов текста. Сейчас в наборы даже эмодзи смайлики добавляют.

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

Кракозябры вместо русских букв — как исправить

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

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

В верхнем меню Notepad++ есть пункт «Кодировки», где у вас будет возможность преобразовать уже имеющийся вариант в тот, который используется на вашем сайте по умолчанию:

В случае сайта на Joomla 1.5 и выше, а также в случае блога на WordPress следует во избежании появления кракозябров выбирать вариант UTF 8 без BOM. А что такое приставка BOM?

Дело в том, что когда разрабатывали кодировку ЮТФ-16, зачем-то решили прикрутить к ней такую вещь, как возможность записывать код символа, как в прямой последовательности (например, 0A15), так и в обратной (150A). А для того, чтобы программы понимали, в какой именно последовательности читать коды, и был придуман BOM (Byte Order Mark или, другими словами, сигнатура), которая выражалась в добавлении трех дополнительных байтов в самое начало документов.

В кодировке UTF-8 никаких BOM предусмотрено в консорциуме Юникод не было и поэтому добавление сигнатуры (этих самых пресловутых дополнительных трех байтов в начало документа) некоторым программам просто-напросто мешает читать код. Поэтому мы всегда при сохранении файлов в ЮТФ должны выбирать вариант без BOM (без сигнатуры). Таким образом, вы заранее обезопасите себя от вылезания кракозябров.

Что примечательно, некоторые программы в Windows не умеют этого делать (не умеют сохранять текст в ЮТФ-8 без BOM), например, все тот же пресловутый Блокнот Windows. Он сохраняет документ в UTF-8, но все равно добавляет в его начало сигнатуру (три дополнительных байта). Причем эти байты будут всегда одни и те же — читать код в прямой последовательности. Но на серверах из-за этой мелочи может возникнуть проблема — вылезут кракозябры.

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

В Notepad ++ при выборе кодировки у вас будет возможность преобразовать текст в кодировку UCS-2, которая по своей сути очень близка к стандарту Юникод. Также в Нотепаде можно будет закодировать текст в ANSI, т.е. применительно к русскому языку это будет уже описанная нами чуть выше Windows 1251. Откуда берется эта информация?

Она прописана в реестре вашей операционной системы Windows — какую кодировку выбирать в случае ANSI, какую выбирать в случае OEM (для русского языка это будет CP866). Если вы установите на своем компьютере другой язык по умолчанию, то и эти кодировки будут заменены на аналогичные из разряда ANSI или OEM для того самого языка.

После того, как вы в Notepad++ сохраните документ в нужной вам кодировке или же откроете документ с сайта для редактирования, то в правом нижнем углу редактора сможете увидеть ее название:

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

Вообще, во всех языках гипертекстовой разметки кроме Html используется специальное объявление xml, в котором указывается кодировка текста.

Прежде, чем начать разбирать код, браузер узнает, какая версия используется и как именно нужно интерпретировать коды символов этого языка. Но что примечательно, в случае, если вы сохраняете документ в принятом по умолчанию юникоде, то это объявление xml можно будет опустить (кодировка будет считаться UTF-8, если нет BOM или ЮТФ-16, если BOM есть).

В случае же документа языка Html для указания кодировки используется элемент Meta, который прописывается между открывающим и закрывающим тегом Head:

Эта запись довольно сильно отличается от принятой в стандарте в Html 4.01, но полностью соответствует новому внедряемому потихоньку стандарту Html 5, и она будет стопроцентно правильно понята любыми используемыми на текущий момент браузерами.

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

Как сменить кодировку текстового файла с помощью Блокнота в Windows

Фишка кодировки текстовых фалов в том, что хранятся не сами буквы (символы), а ссылки на них в таблице кодировок. Если с латинским буквами, арабскими цифрами и основными символами типа точек, тире и запятых никаких проблем не возникает: во многих таблицах кодировок все эти буквы, цифры и символы находятся в одних и тех же ячейках, то с кириллицей всё сложно. Например, в разных кодировках буква Ы может находиться в ячейке 211, 114 и 69.

Именно поэтому на заре интернета чтобы посмотреть разные сайты с разными кодировками приходилось подбирать кодировку. (Но кто это помнит?) Сейчас кодировка страницы обычно прописана в заголовке страницы, что позволяет браузеру «автоматически» подбирать отображение символов на наших мониторах.

То есть сервер отдаёт не просто HTML-страничку, а указывает, что у неё кодировка Windows-1251 . Браузер таким образом, считывая информацию о кодировке полученного файла, подставляет символы из указанной кодировки.

Но и это ещё не всё веселье. Например, если на сервере установлена операционная система из семейства *nix (с кодировкой по умолчанию UTF-8 ), а мы шлём файл из нашей любимой ОС Windows, где кодировка текстовых фалов по умолчанию стоит почему-то ANSI , то как вы думаете сервер будет работать с текстом, кодировка которой не совпадает с его? Правильно! Как-то будет работать! Но результат работы может быть непредсказуемым и удивительным. =)

Надеюсь, что мотивация для обращение необходимого внимания на кодировку достаточная и можно перейти к сути вопроса: «Как же, чёрт возьми, сохранить файл в нужной кодировке?!»

В этой статье речь пойдёт как раз о том, как сохранить текстовый файл с помощью программы Блокнот (Notepad) в Windows в нужной кодировке.

Для того, чтобы изменить кодировку текстового файла, конечно же сперва его нужно создать. А после того, как файл создан, нужно ещё суметь его открыть. Самый простой способ отрыть файл — это двойной клик левой кнопкой мыши по его иконке в проводнике:

Если до этого настройки Windows не менялись, то файлы с расширением .txt открываются в Блокноте. (Это ещё один способ, как отрыть Блокнот (Notepad).)

Чтобы поменять кодировку в открывшемся файле, нужно в меню «Файл» текстового редактора Блокнот выбрать пункт «Сохранить как. »:

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

После того, как нужная кодировка выбрана, можно кликнуть на кнопку «Сохранить» или просто нажать Enter:

Так как мы не изменили имя файла, то будет перезаписан тот же самый файл. Поэтому возникает справедливый вопрос: «Файл с таким именем уже существует. Заменить?» Ну да, мы к этому и стремимся! Поменять кодировку у этого файла. Поэтому его нужно перезаписать с новой кодировкой. Соглашаемся:

Всё! Миссия по смене кодировки в текстовом файле выполнена! Файл сохранён с новой кодировкой. Можно закрыть текстовый редактор и устроить празднование этого решающего события! =D

Работа с текстом. Как определить кодировку файла

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

Что нужно

Набор определенных программных средств. Для начала достаточно приложений типа Word, KWrite, браузера Firefox и средства распознавания – enca.

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

Следующий этап распознавания

Через навигационную панель приложения по очереди откройте пункты «Файл» — «открыть». То же самое можно сделать, задействовав комбинацию клавиатуры Ctrl+O.

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

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

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

Кроме препроцессора для обработки текста, Word, существуют и другие функциональные утилиты. Одна из них — KWrite (аналог для unix-систем). Чтобы вы не путались, распишу по пунктам задачу «определить кодировку документа в KWrite».

  1. Загрузка в приложение файла с расширением .txt.
  2. Перебор кодировок до тех пор, пока одна из них не окажется подходящей.
  3. Чтобы выполнить пункт 2, перейдите к опции tools в меню encoding.

Браузер Mozilla Firefox, цель та же – определить кодировку

Принцип примерно тот же, что и в утилитах для работы с текстом. Запускаем проинсталлированный браузер на выполнение, а если он не установлен – скачиваем инсталлятор с mozilla.org.

Затем в открытом окне программы нужно открыть текстовый документ через меню «Файл», подменю «Открыть файл». Если выбранный файл отобразится без искажений, и текст читаемый, определить кодировку не составит труда.

Для этого перейдите на «Вид» — «кодировка », там отображено несколько наборов символов, а тот из них, напротив которого стоит «галочка», и есть определенная браузером кодировка.

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

Специализированное ПО – работаем с enca

Илон Маск рекомендует:  Что такое код mysql_list_tables

Существует и ряд вспомогательных электронных средств, дающих возможность определить кодировку неформатированного текста.

Для тех, кто привык работать под unix, подойдет утилита enca. Ее можно установить при помощи сервиса «Диспетчер пакетов». Найдя доступную категорию пакетов, можно приступить к установке программного обеспечения.

Чтобы вывести листинг языков распознавания, выполните команду enca —list languages, используя терминал.

Если нужно определить кодировку текстового файла после ключа (g), введите его название, а после опции (L) примерно таким же образом введите язык распознавания:

enca -L russian -g /home/vic/temp/myfile.txt.

Подытожим сказанное о кодировке

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

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

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

Кодировка текста.

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

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

Другими словами, от этого параметра зависит корректное отображение веб-страниц. Самое время ответить на вопрос о том, что такое кодировка текста. Её также называют набором символов. Кодировкой является специальная стандартизованная таблица, которая задаёт соответствие между кодом и символом, который он обозначает. Код представлен нулями и единицами, т.е., битами, и любая кодировка содержит конечный набор символов. Количество бит (байт), которое задаёт код, а также набор конкретных символов — это основные параметры кодировок.

В чем суть кодировок текста.

Различные наборы символов сложились исторически и вследствие естественного развития компьютерной техники за последний полувек. Кодировка текста ASCII — один из первых наборов, разработанный в 1963 году и используемый до сих пор. Первоначально таблица содержала всего 128 символов, среди которых были буквы латинского алфавита, цифры и специальные символы. В дальнейшем это число было расширено до 256 — это позволило использовать буквы национальных алфавитов, в том числе и русского. Однако порядок и способ указания подобных символов не был регламентирован, что породило несколько несовместимых между собой кодировок: Windows-1251, КОИ-8. Помимо указанных кодировок, существовали также несовместимые (не-ASCII) варианты — например, CP866.

Стандарт Unicode (Юникод) был разработан для решения этих проблем. На нём основаны наборы символов UTF-8, UTF-16, UTF-32, самым популярным из которых является UTF-8. Обычно его и применяют для вёрстки современных web-страниц; на нём также основана работа большинства систем, таких как WordPress и Joomla. Кодировка текста UTF-8 поддерживает множество специальных символов (например, диакритические знаки и псевдографику), иероглифы и т.д. На сегодняшний день Юникод — самая универсальная кодировка текста.

Установка кодировки происходит на этапе сохранения файла. Веб-мастерам необходимо уметь работать с кодировками для обеспечения корректной работы своих сайтов. Например, если php-файл сохранён в одном наборе символов, а в заголовке (

) html-страницы указан другой — то это вызовет искажение текстовой информации. Важно также обращать внимание и на кодировку базы данных.

High Star

Уроки веб-мастеру

Как самому с нуля сделать сайт? Здесь даны основы сайтостроения, которых еще никто не отменял. Как пользоваться такими программами, как PhotoShop, ImageReady и другими. Полезные советы вебмастерам.

Как перевести файлы в кодировку UTF-8

Те, у кого старые сайты, могут столкнуться с такой проблемой, что необходимо перевести файлы в кодировку UTF-8. К их числу я смело могу назвать и себя. Начала делать сайты более 10 лет назад, когда об этой кодировке было мало что известно. На всех страницах у меня стояла кодировка:

За эти годы некоторые мои сайты распухли до тысячи и более страниц и переделывать все эти тысячные страницы не хватит никаких сил и времени.

Сейчас уже так не пишут. На смену старому пришло новое — HTML5, где нужно прописать:

Скажу честно, все же решила я все перелопатить вручную и вот как это у меня происходило:

  1. Открывала файл в Notepad++
  2. Выделяла весть текст
  3. Копировала весь текст
  4. Переводила кодировку в UTF-8
  5. Вставляла текст
  6. Проверяла опять — в той ли кодировке стоит?
  7. Сохраняла файл

И вот два дня я так долбила один свой сайт.

Можно, конечно же и не менять ничего. Но ведь старые сайты мои давно устарели, нужно переводить их и на современную верстку HTML5 и CSS3, плюс мобильную и адаптивную верстку. И лучше это делать в более продвинутых программах, а не в Notepad++.

Короче, приуныла я. Однако приехал сын-программист и все решил!

Оказывается все уже давно придумано. И если у Вас возникла такая же проблема — не отчаивайтесь! Есть прекрасная программа UTFCast Express

Эту программу можно скачать тут — http://www.rotatingscrew.com/utfcast-express.aspx — Это условно бесплатная программа, которая умеет конвертировать текст из разных кодировок в utf8. Доступна для ОС семейства Windows.

Запускаем UTFCast Express и указываем правильные пути: сверху — что конвертировать, снизу — куда складывать конвертированные файлы. Вам нужно просто выбрать нужные директории, программа сама перекодирует все нужные файлы из папки. Нажимаем «Start».

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

Не забудьте также поставить галочку «Copy Unconverted». Нажимаете кнопочку «Start» и программа заработала!

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

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

Что такое вообще UTF-8

Заметьте, что UTF-8 надо обязательно писать в верхнем регистре и через черточку, то есть никаких там utf-8, utf8 или UTF8. Пишите правильно!

UTF-8 (от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-битный») — одна из общепринятых и стандартизированных кодировок текста, которая позволяет хранить символы Юникода, используя переменное количество байт (от 1 до 6).

Стандарт UTF-8 официально закреплён в документах RFC 3629 и ISO/IEC 10646 Annex D. Кодировка нашла широкое применение в UNIX-подобных операционных системах и веб-пространстве. Сам же формат UTF-8 был изобретён 2 сентября 1992 года Кеном Томпсоном и Робом Пайком и реализован в Plan 9. В качестве BOM использует последовательность байт EF16, BB16, BF16 (что у неё самой является трёхбайтовой реализацией символа FEFF16).

Одним из преимуществ является совместимость с ASCII — любые их 7-битные символы отображаются как есть, а остальные выдают пользователю мусор (шум). Поэтому в случае, если латинские буквы и простейшие знаки препинания (включая пробел) занимают существенный объём текста, UTF-8 даёт выигрыш по объёму по сравнению с UTF-16.

Кодировка файлов

О превосходстве кодировки utf-8 над windows-1251 я уже слышал давно, но не предавал этому значения, так как проблем с отображением текста web страниц ни когда не возникало.
Вернее, проблемы-то были, но они всегда решались одним из трёх верных способов, о которых и пойдёт речь.

Кодировка utf-8

UTF-8 (от англ. Unicode Transformation Format — формат преобразования Юникода) — в настоящее время распространённая кодировка, реализующая представление Юникода, совместимое с 8-битным кодированием текста. Нашла широкое применение в операционных системах и веб пространстве. В Unicode насчитывается свыше 100 000 символов.

Кодировка Windows-1251 (синоним CP1251)

Windows-1251 — набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows. Пользуется довольно большой популярностью. Windows-1251 выгодно отличается от других 8‑битных кириллических кодировок (таких как CP866, KOI8-R и ISO 8859-5) наличием практически всех символов, использующихся в русской типографии для обычного текста (отсутствует только значок ударения); она также содержит все символы для близких к русскому языку языков: украинского, белорусского, сербского и болгарского. Общее количество символов порядка — 256 шт.

Отличие кодировок

Главное отличие кодировок — это количество символов и здесь явно лидирует UTF-8.
Наверно, единственный плюс кодировки windows-1251 – она однобайтовая, следовательно, занимает меньший объём. Но сегодня, когда дисковое пространство измеряется гига-тера-байтами, вряд ли, кто-то будет считать байты.
И еще одно обстоятельство, которое меня окончательно убедило использовать кодировку UTF-8 – это технология AJAX, которая не поддерживает windows-1251.
Так, что если Вы еще не определились, какую кодировку использовать для Ваших web страниц, то советую остановиться на Юникоде (UTF-8), что бы в дальнейшем не пришлось переводить весь сайт с кодировки windows-1251 на utf-8.

Перекодировка файлов в utf-8 в три шага

  1. Кодировка страниц.

Для того, что бы сменить кодировку страницы, необходимо открыть файл в Adobe Dreamweaver и в окне «свойства страницы» установить нужную кодировку и нажать OK.

Ни каких галочек BOM ставить не надо.

Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа,
сохраняемого как UTF-8. Это метка порядка байтов Юникода (англ. Byte Order Mark, BOM), также её часто
называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature). По наличию сигнатуры программы могут
автоматически определить, является ли файл закодированным в UTF-8, однако файлы с такой сигнатурой
могут некорректно обрабатываться старыми программами, в частности xml-анализаторами.

Можно так же использовать текстовый редактор NotePad++,

Dreamweaver это делает автоматически.

А что же делать, если вы наклепали сотню другую html — файлов, прежде чем узнали о превосходстве кодировки UTF-8?

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

Думаю, с этой проблемой сталкиваются многие начинающие web мастера (скажу честно, я не исключение). Поэтому и выкладываю решение данной задачи.

Меняем кодировку текста у всех HTML файлов в одной директории (папке).

Затем отправляем этот файл на сервер в ту папку, где находятся HTML страницы в кодировке Windows-1251
Теперь остаётся только открыть файл «recode.php» в любом удобном для вас браузере и нажать кнопку.

Через секунду или две все файлы с разрешением .html и .htm поменяют кодировку с windows-1251 на utf-8.

А в конфигурационный файл «.htaccess» пропишется кодировка по умолчанию UTF-8.
Хочу заметить, что это всё возможно только при поддержке сервером технологии PHP.

Настройка кодировки по умолчанию для сервера.

Для настройки сервера необходимо создать (если файла нет) в любом текстовом редакторе файл с именем .htaccess (с точкой в начале).
Прописать в нем одну строку:

И сохранить файл в корневой директории (там же где и index).

.htaccess (от. англ. hypertext access) — файл дополнительной конфигурации веб-сервера Apache,
а также подобных ему серверов. Позволяет задавать большое количество дополнительных
параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких
как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения
главного конфигурационного файла.

Кодировка базы данных MySQL.
Для отображения правильного, читабельного текста в таблицах базы данных, а так же при выводе данных на веб страницу необходимо полное соответствие кодировок.
Решается это внесением дополнительной строки перед закрывающемся тегом ?> в PHP код подключения к базе данных:

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

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL