Как избавиться от "кракозябр" на сайте. Изменение кодировки документов
Кодировка символов указывает компьютеру, как интерпретировать необработанные нули и единицы в реальные символы. Обычно это делается путем сопряжения чисел с символами. В настоящее время существует множество различных типов кодировок символов, но чаще всего используются ASCII, 8-битные и Unicode-кодировки.
Пример закодированного текста:
UHJvbW9fMTA=
Проблема с некорректным отображением наполнения сайта, так называемыми "кракозябрами", в большинстве случаев связана с кодировкой документов.
Почему такое случается? Причина такому явлению проста: заданная кодировка элемента не отвечает кодировке заданной браузером, как следствие получается конфликт и мы видим эти странные символы на страницах сайта. Решение вопроса идет от сути причины - это установка единой для браузера и документов кодировки.
В этой статье мы разберем как избавится от этого явление, рассмотрим как изменять и указывать кодировку.
1)Проверяем HTML разметку. Обращаем внимание на значение атрибута charset тега meta, что находится в секции head. Здесь должна содержаться кодировка, на которой написан Ваш документ. Если не указать этот атрибут, браузер будет определять кодировку автоматически, если она определилась неверно, пользователь увидит на сайте набор непонятных символов.
2)Кодировка файла. Если мета тег выставлен в нужной кодировке и браузер отображает ту же кодировку, но все равно на странице кракозябры, нужно проверить в какой кодировке сохранен сам файл. Это можно сделать через текстовый редактор, удобно для этого дела использовать Notepad++. Открываем файл и внизу в правом углу указана кодировке текущего документа. Если Вы видите, что кодировка выставлена неверно, нужно сменить ее, выбираем меню 'Кодировки' и преобразуем файл в нужную кодировку.
3) файл .htaccess. Если после выполнения первого и второго пункта проблема все равно остается, значить причина кроется в настройках сервера и нужно прописывать кодировку в файле .htaccess. Этот файл находиться в корневой директории Вашего сайта. Если его нет, то нужно просто создать этот файл. Открываем файл и с новой строки прописываем:
AddDefaultCharset тип кодировки
Например, если Вам нужно указать кодировку windows-1251, тогда добавляем строку:
AddDefaultCharset WINDOWS-1251
Сразу сюда можно добавить кодировку и для php.
Сохраняем изменения, все готово.
4)Некорректная кодировка в БД. Кодировка таблиц и их полей также должны иметь единую кодировку с другими файлами и сервером. Для смены версии кодировки БД удобно использовать команду:
ALTER DATABASE `namedb` COLLATE cp1251_general_ci;
где `namedb` - название БД;
cp1251_general_ci - кодировка, которую хотите применить.
И проверяем наши изменения введя в поле запрос, для отображения всех значений и настроек БД:
SHOW VARIABLES;
Если нужно сменить кодировку в таблице.Для наглядности, в качестве примера возьмем смену кодировки utf8_danish_ci на cp1251_general_ci в таблице MARIA.
Используем команду:
ALTER TABLE `nametable` COLLATE cp1251_general_ci;
Как видим по скрину, что представлен ниже, кодировка изменилась успешно.
Если есть необходимость можно изменять кодировку даже в отдельных полей, для того применяем команду:
ALTER TABLE `nametable` CHANGE `namefield` VAR(4) CHARACTER SET cp1251 COLLATE cp1251_general_ci;
где `nametable` - название таблицы;
`namefield` - названия поля, в котором будут изменения;
Также эти изменения легко делать непосредственно в phpMyAdmin.
- выбираем таблицу и открываем ее;
- кликаем на поле - ‘Структура’ и выбираем необходимое поле таблицы , для смены кодировки.
- нажимаем на элемент ‘Сравнение’ и с выпадающего списка выбираем нужную версию кодировки.
Если после этих манипуляций проблема осталась, Вы можете обратиться к специалистам тех.поддержки ГиперХост. Мы всегда рады 24/7 помочь нашим клиентам в решении вопросов, и не только с кодировкой.