Непонятные символы вместо текста в браузере

Здравствуйте, уважаемые читатели, почитатели и прочие хорошие люди!

Случалось ли Вам получать и читать письма на “фиг каком пойми языке” или заходить на какой-нибудь интернет-ресурс и вместо привычных букв видеть сплошные кракозябры? Если да, тогда эта заметка для Вас, ибо в ней мы поговорим о кодировке страниц, её форматах, почему оная возникает и как впредь избежать непонятных иероглифов.

кодировка текста, лого

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


Что такое кодировка текста и с чем ее едят?

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

sonikelf, неправильная кодировка

Сначала я подумал, что моя любимая Мозилка (браузер Firefox) перегрелась и ей пора вызывать неотложку, но потом начал понимать, что проблема, скорее всего, на стороне ресурса сети и кроется она в неправильно настроенной кодировке. Это действительно оказалось так, и пошаманив немного с бубном, проблемка была оперативно решена. Результатом же всех моих любовных похождений и стал сегодняшний материал. Собственно, поехали разбираться в деталях.

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

Если Вы хоть немного знакомы с языком разметки гипертекста (HTML), то должны быть в курсе, что сайт глазами поисковых машин (Google, Яндекс) видится не как обычный текст, а как структурированный документ, состоящий из последовательностей различного рода тегов. Чтобы было понятней, о чем я говорю, давайте взглянем на всеми нами любимый сайт Заметки Сис.Админа” проекта [Sonikelf's Project's], но не глазами обычного пользователя, а "глазами" поисковика. Для этого нажимаем сочетание клавиш Сtrl+U (для браузеров Firefox и Chrome) и видим следующую картину (см. изображение):

sonikelf, кодировка в браузере

Перед нами машинный вариант sonikelf.ru, вот в таком вот непрезентабельном виде он подается поисковым системам  и именно в таком виде они его и кушают. Если бы мы просто взяли и “засандалили” варианты статей из блокнота или Word обычным текстом, машины бы им не то что подавились, они бы даже и есть его не стали. Итак, перед нами главная страница проекта в HTML-виде. Обратите внимание на строку с надписью UTF-8, это не что иное, как пресловутая кодировка текста страницы, именно она и отвечает за формат вывода информации в презентабельном виде, в результате чего через браузер мы видим нормальный текст.

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

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

  1. Кодировка (или “Charset”) – соответствие набора символов набору числовых значений. Нужна для “сливания” информации в интернет, т.е. текстовая информация преобразуется в биты данных;
  2. Кодовая страница (“Codepage”) – 1 байтовая (8 бит) кодировка;
  3. Количество значений, принимаемое 1 байтом – 256 (два в восьмой).

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

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

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

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

к содержанию ↑

Виды кодировок текста

А их, в общем-то, хватает.

  • ASCII

Одной из самых “древних” считается американская кодировочная таблица (ASCII, читается как “аски”), принятая национальным институтом стандартов. Для кодировки она использовала 7 битов, в первых 128 значениях размещался английский алфавит (в нижнем и верхнем регистрах), а также знаки, цифры и символы. Она больше подходила для англоязычных пользователей и не была универсальной.

  • Кириллица

Отечественный вариант кодировки, для которого стали использовать вторую часть кодовой таблицы – символы с 129 по 256. Заточена под русскоязычную аудиторию.

  •  Кодировки семейства MS Windows: Windows 1250-1258.

8-битные кодировки, появились как следствие разработки самой популярной операционной системы, Windows. Номера с 1250 по 1258 указывают на язык, под который они заточены, например, 1250 – для языков центральной Европы; 1251 – кириллический алфавит.

  • Код обмена информацией 8 бит – КОИ8

KOI8-R, KOI8-U, KOI-7 – стандарт для русской кириллицы в юникс-подобных операционных системах.

  • Юникод (Unicode)

Универсальный стандарт кодирования символов, позволяющий описать знаки практически всех письменных языков. Обозначение “U+xxxx” (хххх – 16-ричные цифры). Самые распространенные семейства кодировок UTF (Unicode Transformation Format): UTF-8, 16, 32.

В настоящее время, как говорится, “рулит” UTF-8 – именно она обеспечивают наилучшую совместимость со старыми ОС, которые использовали 8-битные символы. В UTF-8 кодировке находятся большинство сайтов в сети Интернет и именно этот стандарт является универсальным (поддержка кириллицы и латиницы).

Разумеется, я привел не все виды кодировок, а только наиболее ходовые. Если же Вы хотите для общего развития знать их все, то полный список можно отыскать в самом браузере. Для этого достаточно пройти в нем на вкладку “Вид-Кодировка-Выбрать список” и ознакомиться со всевозможными их вариантами (см. изображение).

вид кодировка

Думаю возник резонный вопрос: “Какого лешего столько кодировок?”. Их изобилие и причины возникновения можно сравнить с таким явлением, как кроссбраузерность/кроссплатформенность. Это когда один и тот же сайт сайт отображается по-разному в различных интернет-обозревателях и на различных гаджет-устройствах. Кстати у сайта "Заметки Сис.Админа" с этим, как Вы заметили всё в порядке :).

Все эти кодировки – рабочие варианты, созданные разработчиками “под себя” и решение своих задач. Когда же их количество перевалило за все разумные пределы, а в поисковиках стали плодиться запросы типа: “Как убрать кракозябры в браузере?” - разработчики стали ломать голову над приведением всей этой каши к единому стандарту, чтобы, так сказать, всем было хорошо. И кодировка Unicode, в общем-то, это “хорошо” и сделала. Теперь если такие проблемы и возникают, то они носят локальный характер, и не знают как их исправить только совсем непросвещенные пользователи (впрочем, часто беда с кодировкой и отображением сайтов появляется из-за того, что веб-мастер указал на стороне сервера некорректный формат, и приходится переключать кодировку в браузере).

Ну вот, собственно, пока вся "базово необходимая" теория, которая позволит Вам “не плавать” в кодировочных вопросах, теперь переходим к практической части статьи.

к содержанию ↑

Решаем проблемы с кодировкой или как убрать кракозябры?

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

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

таблица символов

Выбрав “дополнительные параметры” (набор Unicode) и соответствующий тип начертания шрифта, Вы увидите полный набор символов, в него входящих. Кликнув по любому символу, Вы увидите его код в формате UTF-16, состоящий из 4-х шестнадцатеричных цифр (см. изображение).

кодировка UTF-16

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

  1. Со стороны пользователя - при чтении информации в интернет (например, при заходе на сайт);
  2. Или, как говорилось чуть выше, со стороны веб-мастера (например, при создании/редактировании текстовых файлов с поддержкой синтаксиса языков программирования в программе Notepad++ или из-за указания неправильной кодировки в коде сайта).

Рассмотрим оба варианта.

№1. Иероглифы со стороны пользователя.
Допустим, Вы запустили ОС и в каком-то из приложений у Вас отображаются пресловутые каракули. Чтобы это исправить, идем по адресу: “Пуск - Панель управления - Язык и региональные стандарты - Изменение языка” и выбираем из списка, "Россия".

Кодировка, язык и стандарты

Также проверьте во всех вкладках, чтобы локализация была “Россия/русский” – это так называемая системная локаль.

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

вид кракозябр, способы решения

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

Чтобы такого не происходило, заходим в редактор Notepad++ и выбираем в меню пункт “Кодировки”. Именно он поможет преобразовать имеющийся документ. Спрашивается, какой? Чаще всего (если сайт на WordPress или Joomla), то “Преобразовать в UTF-8 без BOM” (см. изображение).

кидировка в notepad++

Сделав такое преобразование, Вы увидите изменения в строке статуса программы.

кидировка в notepad++, результаты смены

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

Для этого необходимо прописать “внаглую” (в шапку сайта, т.е, как частенько, в файл header.php) между тегами <head> </head> следующую строчку:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

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

Также может потребоваться корректировка вывода данных из БД (MySQL). Делается сие так:

mysql_query('SET NAMES utf8' );
myqsl_query('SET CHARACTER SET utf8' );
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci'" ');

Как вариант, можно еще сделать ход конём и прописать в файл .htaccess такие вот строчки:

# BEGIN UTF8
AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>
# END UTF8

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

Ну, вот и практическая часть статьи закончена, осталось подвести небольшие итоги.

к содержанию ↑

Послесловие

Сегодня мы познакомились с таким понятием, как кодировка текста. Уверен, теперь при возникновении каракулей на мониторе компьютера Вы не спасуете, а вспомните все приведенные здесь методы и решите вопрос в свою пользу!

На сим все, спасибо за внимание и до новых встреч.

P.S. Комментарии, как и всегда, ждут Ваших горячих дискуссий и вопросов, так что отписываем.
P.P.S: За существование данной статьи спасибо члену команды 25 КАДР

Sonikelf's Project's логотип Sonikelf's Project's логотип Космодамианская наб., 32-34 Россия, Москва (916) 174-8226
Sonikelf

Первый, само собой :)

Иван

Что мне делать если такая проблема возникла на андроид устройстве?

Sinata

Спасибо за статью! Я плохо понимаю, как мне поменять кодировку средствами браузера. Захожу на youtube и через раз там кракозябры, по таблице нашла, на какую кодировку необходимо поменять, а как это сделать, не понимаю.

Kipelovna

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

Sonikelf

Всегда пожалуйста, рад, если действительно пригодилось.

Sol

Ох я аж немного подвис....

Sonikelf

Есть такое :)

ЧАЙНИК

Спасибо, Андрей. Понятно, где копать.

Sonikelf

Рады, что пригодилось ;)

Vlad

Спасибо за науку. Теперь все по полочкам.

Sonikelf

Всегда пожалуйста

25КАДР

Рады стараться, уважаемый!

Rash

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

В конце концов выяснилось, что я установил шрифт Helvetica Neue, который не поддерживает кириллицу и при этом прописался, как sans-serif шрифт по умолчанию. (Насколько знаю, в CSS указывается последовательность шрифтов, допустим font-family:Verdana, Tahoma, sans-serif, и если ни одного из шрифтов нет на компьютере, то автоматом выберется санс-сериф по умолчанию, в моём случае - Гельветика без кириллицы). Удаление шрифта и перезагрузка - все отображается правильно :)

Может кому-то поможет это решение, не всегда в кодировке проблема ;)

Sonikelf

Кстати да, как-то забыли про шрифты. Спасибо за ценное дополнение! :)

Alisa

помогла смена шрифта в настройках браузера)) спасибки)

Владимир

а если кракозябры появляются не на сайтах а в проигрывателе VLC?
как их перекодировать?

Sonikelf

Где именно? В субтитрах?

Владимир

когда слушаешь МР-3 названия одних треков пишет кракозябрами, а др. нормально.

Tester

Как вариант - это отправить нужный заголовок браузеру.
P.S. mysql расширение под php уже давно устарело, используем pdo / mysqli

Sherlock

А что такое "UTF-8 без BOM"? Чем он отличается от обычного?

25КАДР

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

Алексей Липин

Простите, что может быть я и не по делу. Но похожая бяка встречается в "Андроиде", вернее в некоторых программах. А точнее в проигрывателе Audio. У меня имеется, и планшет, и смартфон (Самсунг оба), у которых ОС "Андроид". Так при включении проигрывателя,название песни, музыки часто выдаётся символами (не буквами), которые встречаются в письменности народов ближнего востока. Хотя на флеш-носителях название этих песен или музыки написано кириллицей..Но вот что интересно. У меня недавно был смартфон "Нокиа"Люмиа-610". Там была ОС Windows Phonе 7", которую многие не шибко любят операционную систему). Но там такого безобразия не было вообще. Как написал название песни, так это название и воспроизводится проигрывателем. Ещё раз приношу свои извинения, если мой комментарий оказался не в тему.

ALPom

Это очень распространенная проблема для ОС, основанных на linux (android тоже основана на linux). В тэгах mp3-файла название, исполнитель и т.д. прописывается не в той кодировке. Для новой версии тэга (v.3) стандартом является UTF-8, а программы изменения тэгов, работающие под Windows, автоматом записывают в старых нестандартных кодировках. Поэтому на linux-основанных системах мы видим кракозябры, а в Windows (в т.ч. и мобильной) - нормальный текст. Решение проблемы - перекодировать все тэги в правильную кодировку (UTF-8). Под Windows это можно сделать программой TagScan, если не ошибаюсь. Думаю, можно это сделать для всех файлов "скопом".

Алексей

Просто уникальный материал! Так доходчиво и просто о кодировках, это надо постараться. Мне в общем-то всё знакомо, но настолько всё по полочкам разложено, особенно табличка с определением кодировок.

25КАДР

Да, Алексей, спасибо.
Фигли, видимо автор не зря постарался).

neuch58

Что интересно, болгары это явление именуют - надписи на маймунице :-)
Маймун кызилгют, ага! Креативно...
В свое время болгары сильно пострадали от экспансии :-(

neuch58

ЗЫ Скромно замечу, что еще год назад Неуч советовал развивать на проекте планшетно-смартфонную тематику...
А вы говорите - посещаемость...
ЗЫ2 Из планшета с разбитым экраном можно сваять сервер...
ЗЫ3 На дворе - новая эпоха, время не ждет!
Уже в этом году мы увидим мобильные устройства с 8-ми ядерным процем, даже взрослые серверы переходят на АРМ-платформу... А передача контента в ЛС мобильно-стационарного состава!
Надо соответствовать...
Неуч уже учится, как всегда сам... :-(

вадим

Привет всем.
Андрей поздравляю тебя с Днём рождения,пусть Удача всегда будет с тобой
во всех благих начинаниях (тут подробней :smile: )
Дмитрий спасибо за статью,тоже не раз встречался с такой фигнёй
особенно когда хотел китайские сайты полистать,а там что-то типа такого:
¤¤¤ ¤¤¤¤¤ ¤¤ :smile: тоже сразу не понимал в чём дело.

Sonikelf

Благодарю :)

neuch58

Совпадение, или...
Тема - Настройка...
Название - Кодировка... и не только...
С участием 25-го кадра...
Как плавно Соник подводит аудиторию к днюхе!
Ну прям, НЛП какое-то...

58-й... :-)
ЗЫ На тему шрифтов и кодировок:
- А рубль-то у нас - зачеркнутый! :-(
Только сегодня дошло...

neuch58

ЗЫ2 А перед Новым годом внушил всем разобрать свои ноуты!
Неуч даже планшет разобрал... :-(

Sonikelf

Неуч, ты того, флудить то заканчивай, а то будет как с Артёмом :)

neuch58

Да...
Похоже мой пост от 30.01.2014 00:25(!) ты так и не понял :-)
А жаль... :-(
Прощай.

Sonikelf

Ну так объяснил бы :)

neuch58

Неуч 58-й, отличается умом и сообразительностью, умом и сообразительностью... :-)

ЗЫ Вадим - 2-й... :-)

Там же все понятно... 58-й сегодня - 1-й!!! :?: :lol:

"Возраста нет.
Правда-правда!
Совсем нет. Никакого."(c) :-)
Все.
Праздник прошел... :-(

вадим

Ладно не переживай :smile: так и быть,отдаю тебе пальму первенства,
к стати недавно (для себя) обнаружил такую штуку:
1килобайт=1000 байт.
1кибибайт=1024 байт.
У меня вопрос: дык как правильно говорить?
PS кудой дели другана Артёма ? :|

вадим

Просто у него есть настольная книга Дейла Корнеги :smile:

Артём

Не в книге дело. В знаниях сила - вот в чём сила Брат! :-)
Школа Соника - рулит.
Да заколебали меня уже эти юзера: "Как то, да как это..." Обращаются уже ко мне. Но пока по имени-отчеству ещё не величают :-) Денег со знакомых тоже не беру, но уже в авторитете :-)
Уже две "Винды" знакомым восстановил - поэтому и пропал с комментов. Некогда флудить было.
А щас начну тут в комментах раздавать добро направо и налево:-D
Дейл Карнеги со своей книгой может только соперничать с другой книгой Аллана и Барбары Пиз -
"Язык телодвижений" Без приколов.
А Артём встал на путь исправления - уже есть первые успехи :-)

stalker

...нуу, с такими темпами ты скоро будещь вещать с серверной Microsoft, только не забывай друзей)

Артём

P.S. Вот когда Neuch58 предоставит нам свои сервера для чата, тогда там будет вход только по приглашениям :-) Тролли налево - непонятные направо, остальные... попробуйте только :-D

stalker

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

Адуванищее

Андрей, так сейчас можно использовать более мелкую строчку
_

Кстати, имеется сайт визитка на html - на хосте стоит кодировка cp1251, сам html так-же в cp1251 с соответствующим кодом, если меняю кодировку в файте на utf - вылазят кракозябры (менять кодировку хоста - некомильфо, больше 40 php файлов надо будет менять, а мне лень)
Можно как-то из ситуации найти выход?)

Павел

Адуванищее, я как раз собирался на эту тему комментарий запостить, это единственное не описанное в отличной статье место, просто оно - для программистов - настолько очевидное, что забывают, а начинающуе создатели страниц на этом путаются, вот как ты:

запись кодировки в заголовке страницы - в , как описано в статье, не является никакой магией, всё проще:

кодировка, там указанная, обязана соответствовать реальности, то есть той кодировке, в какой сам текст страницы!
Поэтому в твоём случае полностью лишено смысла указывать UTF-8, раз текст - в кодировке cp1251! Надо конечно же указать (реальность!)

Понимаешь, когда автор статьи писал о UTF-8, это он имел в виду (правильную) рекомендацию для тех, кто только собирается делать страницу - он прав, лучше делать в UTF-8 (и сам текст тогда должен быть в UTF-8).

Но если, как в твоём случае, страница уже существует, и она в другой кодировке, то именно ту кодировку и надо указать.

Подробнее - в разделах "Для разработчика" (начинающего) на моём сайте про кириллицу

:-)

AlexPO

Подскажите почему у меня в C:\Users одна из папок называтся ���������

Feers1de

Немного не пойму. В каком конфигурационном файле корректировать вывод данных из БД (MySQL)? В основном файле настроек типа my.ini...?

Павел

Спасибо, вот это вот помогло!
# BEGIN UTF8
AddDefaultCharset utf-8
AddCharset utf-8 *

CharsetSourceEnc utf-8
CharsetDefault utf-8

# END UTF8

Кстати, а для корректировки вывода данных из БД куда этот код надо вписывать?

Анжелика

Подскажите, что это такое у меня, периодически такие вот подобные надписи появляются или вместо нормальных слов или возле них, не пойму. уже второй день замечаю в браузере хром, его переустановила, думала, может с хромо связано, но и вОпере тоже проскакивали таки надписи в некоторых местах https://prnt.sc/barc7k

роман

Здравствуйте.Сам сайт отображается верно.Не правильно отображается в поисковике при запросе,а потом после входа уже всё норм.упало правда место при запросе>и что теперь именно делать не пойму

Степан

все файлы сайта выглядят вот так: https://sonikelf.ru/forum/i/42ThCr2.png, пробовал менять кодировки, не помогает. Помогите пожалуйста