Как кодировка влияет на отображение сайта, чем отличается UTF-8 от Windows 1251 и где указать кодировку.
В статье:
-
Зачем нужна кодировка
-
Виды кодировок
-
Как определить кодировку на сайте
-
Если кодировка не отображается
-
Где указать кодировку сайта
Разбираем, на что влияет кодировка, нужно ли указывать ее самостоятельно, и почему могут появиться так называемые «кракозябры» на сайте.
Зачем нужна кодировка
Кодировка (Charset) — способ отображения кода на экране, соответствие набора символов набору числовых значений. О ней сообщает строка Content-Type и сервер в header запросе.
Несовпадение кодировок сервера и страницы будет причиной появления ошибок. Если они не совпадают, информация декодируется некорректно, так что контент на сайте будет отображаться в виде набора бессвязных букв, иероглифов и символов, в народе называемых «кракозябрами». Такой текст прочитать невозможно, так что пользователь просто уйдет с сайта и найдет другой ресурс. Или останется, если ему не очень важно содержание:
Google рекомендует всегда указывать сведения о кодировке, чтобы текст точно корректно отображался в браузере пользователя.
Кодировка влияет на SEO?
Разберемся, как кодировка на сайте влияет на индексацию в Яндекс и Google.
Яндекс четко заявляет:
«Тип используемой на сайте кодировки не влияет на индексирование сайта. Если ваш сервер не передает в заголовке кодировку, робот Яндекса также определит ее самостоятельно».
Позиция Google такая же. Поисковики не рассматривают Charset как фактор ранжирования или сигнал для индексирования, тем не менее, она косвенно влияет на трафик и позиции.
Если кодировка сервера не совпадает с той, что указана на сайте, пользователи увидят нечитабельные символы вместо контента. На таком сайте сложно что-либо понять, так что скорее всего пользователи сбегут, а на сайте будут расти отказы.
Поэтому она важна для SEO, хоть и влияет на него косвенно через поведенческие. Пользователи должны видеть читабельный текст на человеческом языке, чтобы работать с сайтом.
Виды кодировок
Существует довольно много видов, но сейчас распространены два:
UTF-8
Unicode Transformation Format — универсальный стандарт кодирования, который работает с символами почти всех языков мира. Символы могут занимать от 1 до 4 байт, такое кодирование позволяет создавать мультиязычные сайты.
Есть несколько вариантов — UTF-8, 16, 32, но чаще используют восьмибитное.
Windows-1251
Этот вид занимает второе место по популярности после UTF-8. Windows-1251 — кодирование для кириллицы, созданное на базе кодировок, использовавшихся в русификаторах операционной системы Windows. В ней есть все символы, которые используются в русской типографике, кроме значка ударения. Символы занимают 1 байт.
Выбор кодировки остается на усмотрение веб-мастера, но UTF-8 используют намного чаще — ее поддерживают все популярные браузеры и распознают поисковики, а еще ее удобнее использовать для сайтов на разных языках.
Определить кодировку страницы своего или чужого сайта можно через исходный код страницы. Откройте страницу сайта, выберите «Просмотр кода страницы» (сочетание горячих клавиш Ctrl+U» в Google Chrome) и найдите упоминание «charset» внутри тега head.
На странице сайта используется кодировка UTF-8:
Узнать вид кодирования можно с помощью «Анализа сайта». Сервис проверяет в том числе и техническую сторону ресурса: анализирует серверную информацию, определяет кодировку, проверяет редиректы и другие пункты.
С помощью этого же сервиса можно проверить корректность указанного кодирования. Аудит внутренних страниц «Анализа сайта» проверяет кодировку сервера и сравнивает ее с той, которая указана на внутренней странице. Найденные ошибки Анализ покажет в результатах проверки, и вы сразу узнаете, где нужно исправить.
Проверить кодировку еще можно через сервис Validator.w3, о котором писали в статье о проверке валидации кода. Нужная надпись находится внизу страницы.
Если валидатор не обнаружит Charset, он покажет ошибку:
Но валидатор работает не точно: он проверяет только синтаксис разметки, поэтому может не показать ошибку, даже если кодирование указано неправильно.
Если кодировка не отображается
Если вы зашли на чужой сайт с абракадаброй, а вам все равно очень интересно почитать контент, то в Справке Google объясняют, как исправить кодирование текста через браузер.
О проблеме возникновения абракадабры на вашем сайте будут сигнализировать метрики поведения: вырастут отказы, уменьшится глубина просмотров. Но скорее всего вы и раньше заметите, что что-то пошло не так.
Главное правило — для всех файлов, скриптов, баз данных сайта и сервера должна быть указана одна кодировка. Ошибка может возникнуть, если вы случайно указали на сайте разные виды кодировки.
Яндекс советует использовать одинаковую кодировку для страниц и кириллических адресов структуры. К примеру, если робот встретит ссылку href=»/корзина» на странице с кодировкой UTF-8, он сохранит ее в этом же UTF-8, так что страница должна быть доступна по адресу «/%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D0%B0».
Где указать кодировку сайта
Если проблема возникла на вашем сайте, способ исправления зависит от вида сайта. Для одностраничника достаточно указать кодировку в мета-теге страницы, а для большого сайта есть разные варианты:
- кодировка в мета-теге;
- кодировка в .htaccess;
- кодировка документа;
- кодировка в базе данных MySQL.
Кодировка в мета-теге
Добавьте указание кодировки в head файла шаблона сайта.
При создании документа HTML укажите тег meta в начале в блоке head. Некоторые браузеры могут не распознать указание кодировки, если оно будет ниже.
Мета-тег может выглядеть так:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
или так:
<meta charset="utf-8">
В HTML5 они эквивалентны.
В темах WordPress обычно тег «charset» с кодировкой указан по умолчанию, но лучше проверить.
Кодировка в файле httpd.conf
Инструкции для сервера находятся в файле httpd.conf, обычно его можно найти на пути «/usr/local/apache/conf/».
Если вам нужно сменить кодировку Windows-1251 на UTF-8, замените строчку «AddDefaultCharset windows-1251» на «AddDefaultCharset utf-8».
Осторожнее: если вы измените в файле кодировку по умолчанию, то она изменится для всех проектов на этом сервере.
Убедитесь, что сервер не передает HTTP-заголовки с конфликтующими кодировками.
Кодировка в .htaccess
Добавьте кодировку в файл .htaccess:
- Откройте панель управления хостингом.
- Перейдите в корневую папку сайта.
- В файле .htaccess добавьте в самое начало код:
- для указания кодировки UTF-8 — AddDefaultCharset UTF-8;
- для указания кодировки Windows-1251 — AddDefaultCharset WINDOWS-1251.
- Перейдите на сайт и очистите кэш браузера.
Кодировка документа
Готовые файлы HTML важно сохранять в нужной кодировке сайта. Узнать текущую кодировку файла можно через Notepad++: откройте файл и зайдите в «Encoding». Меняется она там же: чтобы сменить кодировку на UTF-8, выберите «Convert to UTF-8 without BOOM». Нужно выбрать «без BOOM», чтобы не было пустых символов.
Кодировка Базы данных
Выбирайте нужную кодировку сразу при создании базы данных. Распространенный вариант — «UTF-8 general ci».
Где менять кодировку у БД:
- Кликните по названию нужной базы в утилите управления БД phpMyAdmin и откройте ее.
- Кликните на раздел «Операции»:
- Введите нужную кодировку для базы данных MySQL:
- Перейдите на сайт и очистите кэш.
С новой БД проще, но если вы меняете кодировку у существующей базы, то у созданных таблиц и колонок заданы свои кодировки, которые тоже нужно поменять.
Для всех таблиц, колонок, файлов, сервера и вообще всего, что связано с сайтом, должна быть одна кодировка.
Проблема может не решиться, если все дело в кодировке подключения к базе данных. Что делать:
- Подключитесь к серверу с правами mysql root пользователя:
mysql -u root -p - Выберите нужную базу:
USE имя_базы; - Выполните запрос:
SET NAMES ‘utf8’;
Если вы хотите указать Windows-1251, то пишите не «utf-8», а «cp1251» — обозначение для кодировки Windows-1251 у MySQL.
Чтобы установить UTF-8 по умолчанию, откройте на сервере my.cnf и добавьте следующее:
В области [client]:
default-character-set=utf8
В области [mysql]:
default-character-set=utf8
В области [mysqld]:
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
Вы когда-нибудь сталкивались с проблемами кодировки на сайте?
41
16.11.200912:1016.11.2009 12:10:02
Несмотря на то, что поддержка UTF8 появилась в продукте давно, остаются много проектов, сделанных на старой версии в cp1251. Теоретически сделать конвертацию не сложно, однако могут возникнуть трудности.
Сразу оговорюсь, что данный пост не претендует на статус официального документа, это должно быть хорошее подспорье по проблеме.
Подготовка
- Для работы сайта на битрикс в utf8 абсолютно необходимо наличие модуля mbstring в php (это есть почти на любом хостинге) и установка параметра
С этим может быть проблема т.к. с версии php 5.2.8 параметр меняется глобально на весь сервер (http://bugs.php.net/bug.php?id=47187). Уточните вопрос у хостера, но будьте осторожны если вам предложат CGI (см. «как выбрать хостера»).
На VPS/выделенном сервере параметр без проблем меняется в php.ini.
- Обязательно сделайте резервную копию работающего сайта, а лучше именно на копии проводите эксперименты. Если что-то пойдёт не так — вы можете потерять данные!
Этапы перехода
- Подготовить сервер как показано выше
- Добавить в /bitrix/php_interface/dbconn.php
- Установить в /bitrix/.settings.php
utf_mode => array(‘value’ => true, ‘readonly’ => true)
- Изменить в настройках сайта кодировку с windows-1251 на utf-8
- Изменить в настройках языка ru кодировку с windows-1251 на utf-8
- Конвертировать все файлы в utf8
- Конвертировать БД в utf8
- Сменить в /bitrix/php_interface/after_connect.php
$DB->Query(«SET NAMES ‘cp1251′»;);
на
$DB->Query(«SET NAMES ‘utf8′»;);
и в файле /bitrix/php_interface/after_connect_d7.php
$connection->queryExecute(«SET NAMES ‘utf8′»);
$connection->queryExecute(‘SET collation_connection = «utf8_unicode_ci»‘); - Сбросить весь кеш
- Выйти и зайти на сайт чтобы обновить данные сессии
Практическая сторона вопроса
После смены кодировки сайта публичная часть принимает вид:
Это нормально, браузер пытается показать данные не в той кодировке. Теперь после всех действий внешний вид восстановится, и мы увидим, что процесс прошёл успешно.
Большое число файлов надо конвертировать по шагам, для этого буду использовать
наработки для поиска вирусов
. По большому счёту, тут надо только переделать функцию замены в конвертацию через mb_convert_encoding.
Примечание. Часто при использовании внешних программ для конвертации в файлы добавляется специальная последовательность символов, т.н.
BOM
. Эти символы должны находиться только вначале файла, а поскольку итоговая html страница является составной из нескольких php файлов, то спецсимволы появляются в теле html страницы. Если делаете вручную — не сохраняйте с BOM!
Для конвертации базы надо сменить кодировку базы, всех таблиц и всех текстовых полей таблиц. Вручную это тоже делать не очень удобно. Решил сделать конвертацию файлов и базы в одном скрипте.
Скрипт выполняет операции:
— Конвертировать все файлы в utf8
— Конвертировать БД в utf8
Остальное следует делать вручную по списку в том порядке, как написано.
Можно скачать по ссылке:
convert_utf8.php
В итоге получил картинку
Теперь, словно, девушка даже слегка улыбнулась
Обновление от 20.02.2012
- Теперь конвертируются все файлы, не только языки. При этом делается авто определение кодировки файла, а значит можно выполнять конвертацию повторно.
- Для кодировки базы указывается сравнение utf8_unicode_ci (требуется продуктом).
- Исправлены ошибки конвертации базы.
- Шаг конвертации файлов можно пропустить.
Дополнение от 10.09.2018
Если вы использовали интеграцию с почтой, проверьте настройки ящиков, если там установлена кодировка, переключите кодировку сайта.
Как изменить кодировку сайта
Иногда возникают случаи, когда при открытии сайта отображается не привычный нам контент, а сплошной набор нечитаемых символов. Это связано с тем, что кодировка ресурса не совпадает с той кодировкой, которая устанавливается сервером. Например, для чтения файлов используется Windows-1251, а требуется UTF-8.
Что такое кодировка сайта и как ее можно изменить – об этом и поговорим в сегодняшней статье.
Что такое кодировка
Кодировка – специальный метод, позволяющий отображать текст на экране таким образом, чтобы он был понятен каждому пользователю. Все символы, которые мы видим в интернете, – это буквы и цифры только для нас, компьютер их не понимает. Он воспринимает информацию в байтах, весь текст на экране монитора – это совокупность байтов. У каждого символа есть свое кодовое значение, которое компьютер использует при выводе слов и чисел на экран.
Вот наглядный пример того, как воспринимается компьютером латинский алфавит и прочие символы:
Если никакая кодировка не установлена, вместо символов мы увидим такие значения. Чтобы понять компьютер, необходимо установить нужную кодировку для расшифровки символов из этой таблицы.
Типы кодировок
Существует несколько типов кодировок:
- ASCII – первая кодировка, которая была признана Американским национальным институтом мировых стандартов. Для ее использования задействуется 7 бит, где первые 128 значений включают в себя весь английский алфавит, числа, знаки и символы. Такая кодировка ранее использовалась на англоязычных ресурсах.
- Кириллица – вариант российской кодировки, используемый на русскоязычных сайтах и блогах.
- КОИ8 (код обмена информацией 8-битный) – была разработана для кодирования букв кириллических алфавитов. Распространена в Unix-подобных ОС и электронной почте. Постепенно исчезает в связи с приходом Юникода.
- Windows 1250-1258 – 8-битные кодировки, зародившиеся после появления операционной системы Windows. Например, 1250 – все языки центральной Европы, 1251 – кириллица. В ней присутствуют все буквы русского алфавита, а также символы (за исключением знака ударения).
- UTF-8 – наиболее используемый тип кодировок, работающий практически со всеми языками мира. Символы занимают от 1 до 4 байт, что дает возможность создавать мультиязычные веб-сайты. Помимо UTF-8, есть такие варианты, как UTF-16 и UTF-32, однако предпочтение отдается первому типу.
Существуют и другие типы кодировок, но они используются в меньшей степени либо не используются вообще.
Как определить кодировку на сайте
Узнать кодировку своего или чужого сайта довольно просто, достаточно просмотреть исходный код страницы. Сделать это можно следующим образом:
- Открываем сайт, на котором необходимо посмотреть кодировку, и кликаем правой кнопкой мыши по любой области. В отобразившемся меню выбираем «Просмотр кода страницы». Также можно воспользоваться комбинацией клавиш «CTRL+U».
- В результате перед нами отобразится новое окно с кодом страницы – в нем воспользуемся комбинацией клавиш «CTRL+F» для поиска строки, отвечающей за кодировку веб-страницы. Вводим запрос «charset» и смотрим результат.
После charset указано значение UTF-8 – это означает, что данная кодировка используется на рассматриваемом сайте. Если вы увидели, что на вашем сайте указана некорректная кодировка, то это можно исправить. Подробнее о том, как это сделать, поговорим далее.
Где и как изменить кодировку
Все зависит от сайта. Способ установки кодировки может различаться: если используется одностаничник, то достаточно в HTML-файле прописать мета-тег в блоке <head>:
В противном случае нам потребуется отредактировать файл .htaccess. Рассмотрим на примере хостинга Timeweb, как это можно сделать.
- Открываем личный кабинет и переходим в раздел «Файловый менеджер». В нем перемещаемся в директорию с сайтом и находим в корне файл .htaccess – открываем его двойным кликом мыши.
- В начало файла необходимо добавить следующий код:
Открываем свой сайт и видим, что ничего не изменилось – так и должно быть. Чтобы внести изменения, очищаем кэш с помощью комбинации клавиш «CTRL+F5» и смотрим результат.
Как видите, сменить кодировку на своем сайте легко. Аналогичным образом мы можем изменить кодировку и на всем сервере – для этого необходимо выполнить следующее (актуально для веб-сервера Apache):
- Находим файл httpd.conf, который расположен по адресу: «/usr/local/apache/conf/», и открываем его.
- Если нужно поменять Windows-1251 на UTF-8, то меняем строку «AddDefaultCharset windows-1251» на «AddDefaultCharset utf-8».
Если вы поменяете кодировку по умолчанию, то она будет изменена для всех ресурсов, находящихся на данном сервере.
Смена кодировки базы данных
В данном случае нам потребуется открыть базу данных через личный кабинет хостинга и изменить значение кодировки в разделе «Операции». Давайте рассмотрим, как это можно сделать через админку Timeweb.
- Переходим в свой аккаунт и открываем раздел «Базы данных MySQL» – в нем находим нужную базу данных и кликаем по кнопке «phpMyAdmin».
- В отобразившемся окне вводим пароль и следуем далее.
- Переходим к нужной базе данных и в верхнем меню выбираем «Операции».
- Указываем в нижнем блоке значение «utf8mb4_general_ci» и в правой части жмем на кнопку «Вперед».
- Готово! Теперь база данных использует кодировку UTF-8.
На этом статья подходит к концу. Теперь вы знаете больше о кодировке сайта и можете легко ее изменить в случае необходимости. Спасибо за внимание!
Как настроить кодировку сайта самостоятельно
Разбираем, на что влияет кодировка, нужно ли указывать ее самостоятельно, и почему могут появиться так называемые «кракозябры» на сайте.
Зачем нужна кодировка
Кодировка (Charset) — способ отображения кода на экране, соответствие набора символов набору числовых значений. О ней сообщает строка Content-Type и сервер в header запросе.
Несовпадение кодировок сервера и страницы будет причиной появления ошибок. Если они не совпадают, информация декодируется некорректно, так что контент на сайте будет отображаться в виде набора бессвязных букв, иероглифов и символов, в народе называемых «кракозябрами». Такой текст прочитать невозможно, так что пользователь просто уйдет с сайта и найдет другой ресурс. Или останется, если ему не очень важно содержание:
Студентка списывала реферат с формулами, а на сайте слетела кодировка. Реальная история
Google рекомендует всегда указывать сведения о кодировке, чтобы текст точно корректно отображался в браузере пользователя.
Кодировка влияет на SEO?
Разберемся, как кодировка на сайте влияет на индексацию в Яндекс и Google.
Позиция Google такая же. Поисковики не рассматривают Charset как фактор ранжирования или сигнал для индексирования, тем не менее, она косвенно влияет на трафик и позиции.
Если кодировка сервера не совпадает с той, что указана на сайте, пользователи увидят нечитабельные символы вместо контента. На таком сайте сложно что-либо понять, так что скорее всего пользователи сбегут, а на сайте будут расти отказы.
Пример страницы со слетевшей кодировкой
Поэтому она важна для SEO, хоть и влияет на него косвенно через поведенческие. Пользователи должны видеть читабельный текст на человеческом языке, чтобы работать с сайтом.
Виды кодировок
Существует довольно много видов, но сейчас распространены два:
Unicode Transformation Format — универсальный стандарт кодирования, который работает с символами почти всех языков мира. Символы могут занимать от 1 до 4 байт, такое кодирование позволяет создавать мультиязычные сайты.
Есть несколько вариантов — UTF-8, 16, 32, но чаще используют восьмибитное.
Windows-1251
Этот вид занимает второе место по популярности после UTF-8. Windows-1251 — кодирование для кириллицы, созданное на базе кодировок, использовавшихся в русификаторах операционной системы Windows. В ней есть все символы, которые используются в русской типографике, кроме значка ударения. Символы занимают 1 байт.
Выбор кодировки остается на усмотрение веб-мастера, но UTF-8 используют намного чаще — ее поддерживают все популярные браузеры и распознают поисковики, а еще ее удобнее использовать для сайтов на разных языках.
Как определить кодировку на сайте
Определить кодировку страницы своего или чужого сайта можно через исходный код страницы. Откройте страницу сайта, выберите «Просмотр кода страницы» (сочетание горячих клавиш Ctrl+U» в Google Chrome) и найдите упоминание «charset» внутри тега head.
На странице сайта используется кодировка UTF-8:
Указание кодировки в коде страницы
Узнать вид кодирования можно с помощью «Анализа сайта». Сервис проверяет в том числе и техническую сторону ресурса: анализирует серверную информацию, определяет кодировку, проверяет редиректы и другие пункты.
Фрагмент анализа серверной информации сайта
С помощью этого же сервиса можно проверить корректность указанного кодирования. Аудит внутренних страниц «Анализа сайта» проверяет кодировку сервера и сравнивает ее с той, которая указана на внутренней странице. Найденные ошибки Анализ покажет в результатах проверки, и вы сразу узнаете, где нужно исправить.
Отчет о технических данных
Кодировка сервера и страницы
Проверить кодировку еще можно через сервис Validator.w3, о котором писали в статье о проверке валидации кода. Нужная надпись находится внизу страницы.
Кодировка сайта в валидаторе
Если валидатор не обнаружит Charset, он покажет ошибку:
Ошибка указания кодировки
Но валидатор работает не точно: он проверяет только синтаксис разметки, поэтому может не показать ошибку, даже если кодирование указано неправильно.
Если кодировка не отображается
Если вы зашли на чужой сайт с абракадаброй, а вам все равно очень интересно почитать контент, то в Справке Google объясняют, как исправить кодирование текста через браузер.
О проблеме возникновения абракадабры на вашем сайте будут сигнализировать метрики поведения: вырастут отказы, уменьшится глубина просмотров. Но скорее всего вы и раньше заметите, что что-то пошло не так.
Главное правило — для всех файлов, скриптов, баз данных сайта и сервера должна быть указана одна кодировка. Ошибка может возникнуть, если вы случайно указали на сайте разные виды кодировки.
Яндекс советует использовать одинаковую кодировку для страниц и кириллических адресов структуры. К примеру, если робот встретит ссылку href=»/корзина» на странице с кодировкой UTF-8, он сохранит ее в этом же UTF-8, так что страница должна быть доступна по адресу «/%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D0%B0».
Где указать кодировку сайта
Если проблема возникла на вашем сайте, способ исправления зависит от вида сайта. Для одностраничника достаточно указать кодировку в мета-теге страницы, а для большого сайта есть разные варианты:
- кодировка в мета-теге;
- кодировка в .htaccess;
- кодировка документа;
- кодировка в базе данных MySQL.
Кодировка в мета-теге
Добавьте указание кодировки в head файла шаблона сайта.
При создании документа HTML укажите тег meta в начале в блоке head. Некоторые браузеры могут не распознать указание кодировки, если оно будет ниже.
Мета-тег может выглядеть так:
В HTML5 они эквивалентны.
Тег кодировки в HTML
В темах WordPress обычно тег «charset» с кодировкой указан по умолчанию, но лучше проверить.
Кодировка в файле httpd.conf
Инструкции для сервера находятся в файле httpd.conf, обычно его можно найти на пути «/usr/local/apache/conf/».
Если вам нужно сменить кодировку Windows-1251 на UTF-8, замените строчку «AddDefaultCharset windows-1251» на «AddDefaultCharset utf-8».
Убедитесь, что сервер не передает HTTP-заголовки с конфликтующими кодировками.
Кодировка в .htaccess
Добавьте кодировку в файл .htaccess:
- Откройте панель управления хостингом.
- Перейдите в корневую папку сайта.
- В файле .htaccess добавьте в самое начало код:
- для указания кодировки UTF-8 — AddDefaultCharset UTF-8;
- для указания кодировки Windows-1251 — AddDefaultCharset WINDOWS-1251.
Кодировка документа
Готовые файлы HTML важно сохранять в нужной кодировке сайта. Узнать текущую кодировку файла можно через Notepad++: откройте файл и зайдите в «Encoding». Меняется она там же: чтобы сменить кодировку на UTF-8, выберите «Convert to UTF-8 without BOOM». Нужно выбрать «без BOOM», чтобы не было пустых символов.
Кодировка Базы данных
Выбирайте нужную кодировку сразу при создании базы данных. Распространенный вариант — «UTF-8 general ci».
Где менять кодировку у БД:
- Кликните по названию нужной базы в утилите управления БД phpMyAdmin и откройте ее.
- Кликните на раздел «Операции»:
- Введите нужную кодировку для базы данных MySQL:
- Перейдите на сайт и очистите кэш.
С новой БД проще, но если вы меняете кодировку у существующей базы, то у созданных таблиц и колонок заданы свои кодировки, которые тоже нужно поменять.
Для всех таблиц, колонок, файлов, сервера и вообще всего, что связано с сайтом, должна быть одна кодировка.
Проблема может не решиться, если все дело в кодировке подключения к базе данных. Что делать:
- Подключитесь к серверу с правами mysql root пользователя:
mysql -u root -p - Выберите нужную базу:
USE имя_базы; - Выполните запрос:
SET NAMES ‘utf8’;
Если вы хотите указать Windows-1251, то пишите не «utf-8», а «cp1251» — обозначение для кодировки Windows-1251 у MySQL.
Как поменять кодировку на сайте
Меня несколько раз просили написать, как поменять кодировку на сайте. Дело это состоит из нескольких частей, поэтому в двух словах не объяснить. И я принял решение написать эту статью, в которой чётко расписать, что требуется для смены кодировки на сайте.
Давайте с Вами будем переводить сайт в кодировку UTF-8. Если Вы хотите перевести в любую другую кодировку, то всё будет аналогично. Итак, вот порядок действий для этого:
- Все текстовые файлы (html, php, js, txt, в общем, в которых есть текст) перекодируйте в UTF-8. Сделать это очень просто через Notepad++ в пункте «Преобразовать в UTF-8 без BOM» из меню «Кодировки«. Причём именно все файлы, которые даже ничего не выводят на страницу.
- Поместите в корень сайта файл .htaccess с текстом AddDefaultCharset UTF-8.
- Поменяйте кодировку в мета-теге <meta http-equiv=»Content-type» content=»text/html; charset=utf-8″ />
Если Ваш сайт не использует базу данных, то на этом этапе можно закончить менять кодировку. Но если база данных есть, то нужно сделать ещё и следующие шаги:
- Сразу после подключения к БД выполните запрос: SET NAMES UTF-8
- В phpMyAdmin поменяйте кодировку базы данных на utf8_general_ci в её настройках.
- Поставьте у всех таблиц кодировку utf8_general_ci.
- У всех текстовых типов полей так же поставьте кодировку utf8_general_ci.
Всё, теперь Ваша кодировка на сайте изменена. Добавлю лишь, что если где-то в коде Вы занимались преобразованием из одной кодировки в другую (например, через функцию iconv()), то тщательно проверьте это место, возможно, там появится проблема.
Если после смены кодировки у Вас что-то отображается не так, то почитайте эту статью: проблемы с кодировкой.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновленияЕсли у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 11 ):
Молодец Михаил урок очень полезный.Люблю когда коротко и ясно а не наоборот. Спасибо!
просто класно понятно и ещлково спасибо
Здравствуйте Михаил, вот я опробовал, то что вы написали, только с кодировкой windows-1251. Прямо все способы разом применил, вот только все равно вылетали кракозябры. Но вдруг я случайно в файле .htaccess указал кодировку utf-8 и все заработало, нет кракозябр (притом в базе данных и в скрипте у меня кодировка windows-1251). Не могли бы вы мне ответить, почему? (если, конечно этому есть объяснение)
Значит, файлы всё-таки в UTF-8 были. И из базы данных данные тоже поступали с кодировкой UTF-8 (по умолчанию, она и стоит на denwer).
Здравствуйте.Срочно нужна ваша помощь. Выходили крокозябры. решил перекодировать под UTF-8 по вашим указаниями. На 2 или 3 пункте я что-то не так сделал(скорее всего на 3) и у меня сайт перестал работать. Вводя ссылку, у меня пишет текст из index.php
Добрый день. Такая проблема. У меня база данных изначально в кодировке cp1251. База для скрипта почтовой рассылки. Сайт, где внедрен скрипт — в кодировке utf8. Все, что написано в данной статье (по изменению кодировки в базе данных) я сделал. И, все равно, происходит следующее: пользователь, желающий оформить подписку на сайте, после того, как ввел в форму свои имя и e-mail, получает письмо (чтоб подтвердить рассылку), где его имя написано кракозябрами, и далее (после подтверждения) в таком виде и остается в базе данных. Если же меняю кодировку сайта на windows1251 — все хорошо, имя человеческое. Но я не хочу менять кодировку сайта. Как быть? Может быть, есть возможность как-то поменять кодировку отдельно взятого элемента, в данном случае, кодировку формы отправки данных? Спасибо.
Убедитесь, что в письме есть заголовок Content-type с кодировкой utf-8.
Прошу простить, но я совсем плохо знаком с php. Вот такой у меня код отправки. Скажите, что и где нужно поменять? http://jsfiddle.net/w2fes/
Уважаемый Дмитрий,проверьте,пожалуйста,вот эту строчку с параметрами windows-1251 и utf-8. $headers .= «Content-type: text/plain; charset=windows-1251rn»; если не поможет,то будем разбираться
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
В последнее время, в процессе работы, я все меньше и меньше встречаю сайты, которые находятся в некогда популярной кодировке «Windows-1251», приоритетно используемой на русскоязычных ресурсах.
Если верить «Wikipedia» («Википедия» — свободная энциклопедия), на начало апреля 2019 года лишь на 1% всех веб-страниц используется эта кодировка.
Скрывать не буду, я в числе тех, кто так же не использует ее в своих проекта, и вот почему:
- Разные проблемы в процессе работы кода.
- Лишние действия при работе с кодом в текстовых редакторах.
- Отсутствие поддержки многих языков.
- Наличие ошибок в верстке сайта при его проверке через validator.w3.org.
Чтобы избежать этих (и не только) неприятных моментов, сегодня в этой статье я подробно расскажу вам, как перевести сайт под управлением CMS 1C-Bitrix из кодировки «Windows-1251» в «UTF-8».
1. Конвертацию (смену кодировки) в CMS 1C-Bitrix мы начнем с самого главного – создания полного бэкапа сайта (его файлов и базы данных).
2. Далее попросите поддержку хостинга установить для сайта следующие директивы:
mbstring.internal_encoding = UTF-8
mbstring.func_overload = 2
Можно попробовать внести изменения и самостоятельно одним из следующих способов.
2.1. Первый вариант – для тех, кто использует хостинг Beget.
2.1.1. Авторизуйтесь в панели управления хостингом.
2.1.2. Перейдите в раздел «Сайты».
2.1.3. На открывшейся странице, напротив настраиваемого сайта нажмите на иконку «PHP N», где N – используемая версия PHP на вашем сайте.
2.1.4. В открывшейся форме либо вручную добавьте директивы:
mbstring.internal_encoding = UTF-8
mbstring.func_overload = 2
подобно этому:
либо в блоке «Применить оптимальные настройки для CMS:» выберите «Bitrix UTF-8» и сохраните изменение нажатием на кнопку «Применить».
2.2. Второй вариант – через конфигурационный файл php.ini. О том, как узнать адрес его местоположения на вашем хостинге, написано в этой нашей статье.
В нем вам необходимо найти и раскомментировать строки (удалить перед ними содержащие «mbstring.internal_encoding» и «mbstring.func_overload», после чего значения выставить на «UTF-8» и «2» соответственно, чтобы получилась следующая картина:
mbstring.internal_encoding = UTF-8
mbstring.func_overload = 2
2.3. Третий вариант – через файл .htaccess, который находится в корневой папке сайта.
Если вы используете стандартный файл .htaccess и версия PHP на хостинге до 5.4, то найдите блок, похожий на:
<IfModule mod_php5.c>
php_flag session.use_trans_sid off
#php_value display_errors 1
#php_value mbstring.internal_encoding UTF-8
</IfModule>
И добавьте (или раскомментируйте, если такие строки уже есть, удалив перед ними #) следующие строки:
php_value mbstring.internal_encoding UTF-8
php_value mbstring.func_overload 2
Если вы используете стандартный файл .htaccess и версия PHP на хостинге 7+, то найдите блок, похожий на:
<IfModule mod_php5.c>
php_flag session.use_trans_sid off
#php_value display_errors 1
#php_value mbstring.internal_encoding UTF-8
</IfModule>
и замените его на:
<IfModule mod_php7.c>
php_flag session.use_trans_sid off
php_value mbstring.internal_encoding UTF-8
php_value mbstring.func_overload 2
</IfModule>
Во всех остальных случаях попробуйте просто прописать следующие строки в самый верх этого же файла:
php_value mbstring.internal_encoding UTF-8
php_value mbstring.func_overload 2
2.4. Четвертый вариант – через изменение настроек Apache (httpd.conf) – главный файл конфигурации хостинга/сервера. Его расположение может быть по разным путям, распространенные – это папки /usr/local/etc/apache/ и /etc/httpd/conf/. Более точную информацию на этот счет уточняйте у поддержки хостинга.
В нем для нужного виртуального хостинга (сайта) в блок «VirtualHost» вставьте следующие директивы:
php_admin_value mbstring.internal_encoding UTF-8
php_admin_value mbstring.func_overload 2
3. Авторизуйтесь в панели управления сайтом.
4. Перейдите в раздел «Настройки» – «Настройки продукта» – «Модули».
На открывшейся странице удалите модули (если они используются на вашем сайте) «Поиск» (без сохранения таблиц) и «Веб-Аналитика» (без сохранения таблиц, но с сохранением шаблонов сообщений).
5. Если на вашем сайте установлен модуль «Форум», вам необходимо удалить букву «ё» из словаря транслита. Для этого в левом меню перейдите по пути «Сервисы» – «Форумы» – «Фильтр нецензурных слов» – «Словарь транслита», найдите и удалите букву из списка.
6. Далее переходите в «Настройки» — «Настройки продукта» – «Языковые параметры» – «Региональные настройки».
7. На открывшейся странице находите «ru» в столбце «Название» и щелкаете по нему один раз левой кнопкой мыши.
8. На открывшейся странице, в графе «Кодировка» пишите:
UTF-8
После чего сохраняете изменения нажатием на соответствующую кнопку.
После сохранения у вас (в административной части сайта и на самом сайте) могут появиться знаки вопроса – не пугайтесь, на данном этапе это нормальное явление.
9. Далее подключитесь к вашему сайту по FTP.
10. В папке /bitrix/php_interface/ найдите и откройте файл dbconn.php, после чего сразу после <? добавьте:
define('BX_UTF', true);
Сохраните изменения и отправьте файл обратно на сайт.
11. В папке /bitrix/ найдите и откройте файл .settings.php. В нем блок:
'utf_mode' =>
array (
'value' => false,
'readonly' => true,
),
замените на:
'utf_mode' => array(
'value' => true,
'readonly' => true,
),
Сохраните изменения и отправьте файл обратно на сайт.
12. Скачайте архив в конце статьи, разархивируйте и содержимое (файл convert_utf8.php) загрузите по FTP в корень вашего сайта.
13. Перейдите на вашем сайте (через браузер) к файлу по пути /convert_utf8.php, после чего на открывшейся странице (если в предыдущих шагах нет никаких ошибок) у вас появится страница следующего вида:
13.1. Здесь вы жмете на «Проверка прав доступа» и ждете результата проверки. Если все хорошо (в противном случае будет предложен список файлов, которые запрещены для записи), появится страница следующего вида:
Жмете на «Конвертация файлов в UTF8».
13.2. После того, как процесс конвертации файлов завершиться успехом, вы увидите следующую картину:
Здесь вы жмете на «Конвертация базы данных в UTF8», и если вдруг вас перекинет на ваш сайт с формой входа – авторизовываетесь, введя данные от профиля администратора, после чего вас перекинет обратно на страницу выше, где вы вновь нажимаете «Конвертация базы данных в UTF8».
Процесс конвертации базы данных не быстрый, так что запаситесь терпением. По завершении появится сообщение следующего характера:
14. Возвращаетесь в FTP и удаляете из корневой папки сайта ранее загруженный файл convert_utf8.php.
15. Здесь же (в FTP) откройте файл after_connect.php в папке /bitrix/php_interface/ и строку:
$DB->Query("SET NAMES 'cp1251'");
замените на:
$DB->Query("SET NAMES 'utf8'");
$DB->Query('SET collation_connection = "utf8_unicode_ci"');
Сохраните изменения и отправьте файл обратно на сайт.
16. В этой же папке откройте файл after_connect_d7.php и строку:
$connection->queryExecute("SET NAMES 'cp1251'");
замените на:
$connection->queryExecute("SET NAMES 'utf8'");
$connection->queryExecute('SET collation_connection = "utf8_unicode_ci"');
Сохраните изменения и здесь и отправьте файл обратно на сайт.
17. Очистите весь кэш сайта.
18. Выйдите из панели управления сайтом, после чего авторизуйтесь вновь.
19. Установите удаленные из 4 шага модули. Для поиска сделайте переиндексацию (в левом меню «Настройки» – «Поиск» – «Переиндексация» и на открывшейся странице – «Переиндексировать»).
При большом количестве материалов на сайте этот процесс так же не быстрый, поэтому окончания придется подождать некоторое время.
20. Еще раз очистите весь кэш сайта.
21. Дополнительно: если вы используете интеграцию с почтой, в разделе «Сервисы» – «Почта» – «Почтовые ящики», в каждом почтовом ящике во вкладке «Дополнительные настройки», в графе «Кодировка, в которую конвертировать входящую почту», выставьте «(использовать кодировку сайта)».
Вот, собственно, и все. Инструкция тестировалась на 1C-Bitrix версии 18.0.
Остались вопросы? Задать их можете в комментариях под данной статьей.
-
Помощь -
Хостинг -
Сайт не работает -
Как изменить кодировку сайта
Как изменить кодировку сайта
Для изменения кодировки вашего сайта выполните следующие шаги:
- 1.
- 2.
-
3.
Отредактируйте файл .htaccess, добавив в самое начало следующий код:
для указания кодировки UTF-8:
для указания кодировки Windows-1251:
AddDefaultCharset WINDOWS-1251
-
4.
Теперь зайдите на ваш сайт и очистите кэш браузера, нажав «Ctrl» + «F5» или «Ctrl» + «R». Кодировка должна измениться.
Смена кодировки (сравнения) базы данных
-
1.
Зайдите в утилиту для управления базами данных phpMyAdmin: Как войти в phpMyAdmin
-
2.
Откройте необходимую базу данных, нажав на ее название слева, и перейдите в раздел Операции:
-
3.
Выберите необходимую кодировку для самой базы данных MySQL и нажмите изменить:
-
4.
Теперь перейдите на ваш сайт и очистите кэш браузера, нажав «Ctrl» + «F5» или «Ctrl» + «R».
Готово, кодировка должна измениться.
Спасибо за оценку!
Как мы можем улучшить статью?
Нужна помощь?
Напишите в службу поддержки!
Серёжа СыроежкинКопирайтер
1.06.2015
Изменить кодировку
В текущей статье мы поговорим о том, как изменить кодировку на сайте, какие кодировки бывают и какую кодировку выбрать более оптимально.
Кодировка сайта задается с помощью тега meta. Что такое мета-теги и для чего они необходимы мы уже обсуждали в статье Мета-теги. Задается кодировка страницы следующим образом:
<meta charset="utf-8">
Эта строка помещается между тегами <head></head>.
Примечание: Помимо указания нужной кодировки, рекомендуется указывать и язык контента на странице, чтобы помочь поисковым системам правильно определить язык на сайте:
<meta http-equiv="Content-Language" content="ru">
Основные типы кодировок на сайте
Поскольку мы нацелены на русскоязычную аудиторию, будем говорить о наиболее популярных кодировках, которые поддерживают русский язык. К ним относятся:
- UTF-8 — (Юникод) на данный момент наиболее популярная кодировка для веб-сайтов (8 бит);
- Windows-1251 — одна из наиболее распространенных кодировок (8 бит);
- KOI8-R — стандарт для кириллицы в Unix-подобных системах (8 бит).
Юникод (Unicode) является стандартом кодирования, который позволяет представить символы практически всех языков письменности (в том числе математических, музыкальных и других). Юникод имеет своё проявление в форматах UTF-8, UTF-16 и UTF-32, которые различаются между собой способом хранения данных. Для обеспечения наилучшей совместимости со старыми системами используется 8-битная кодировка.
Изменение кодировки текста при помощи блокнота
Чтобы изменить кодировку произвольного текста, можно воспользоваться обычным блокнотом. Допустим, вам необходимо изменить кодировку текста с KOI8 на Windows-1251. Для этого нужно:
- Перенести нужный текст в стандартный редактор «Блокнот» (Notepad);
- В меню «Вид» -> «Кодировка» выбрать «Кирилица (Windows)».
При сохранении файла с помощью блокнота есть возможность выбрать нужную кодировку.
В конструкторе сайтов «Нубекс» все сайты создаются в кодировке UTF, благодаря чему корректно отображаются различные символы и языки.
Смотрите также:
Во многих скриптах экономических проектов (будь то фруктовая ферма, букс, хайп, удвоитель и т.д.) мы иногда сталкиваемся с такой проблемой ⇓.
Вместо привычной нашему глазу кириллице вот такие кракозябры, как это исправить? Как поменять кодировку на сайте? Давайте с Вами будем переводить сайт в кодировку UTF-8. Если Вы хотите перевести в любую другую кодировку, то всё будет аналогично.
Меняем кодировку при помощи Notepad++
Самый лучший способ поменять кодировку в скрипте это блокнот Notepad++ (если у вас нет Notepad++ на компьютере, то Гугл в помощь, только качаем блокнот с официального сайта!).
Все текстовые файлы (html, php, js, txt, в общем, в которых есть текст) перекодируйте в UTF-8. Сделать это очень просто через Notepad++ в пункте «Преобразовать в UTF-8 без BOM» из меню «Кодировки». Причём именно все файлы, которые даже ничего не выводят на страницу.
Поменять кодировку с помощью файла .htaccess
Если же не хотите возится с каждым файлом в скрипте, то есть и такая альтернатива:
1. Поместите в корень сайта файл .htaccess с текстом AddDefaultCharset UTF-8.
2. Поменяйте кодировку в мета-теге <meta http-equiv=»Content-type» content=»text/html; charset=utf-8″ />.
Если Ваш сайт не использует базу данных, то на этом этапе можно закончить менять кодировку. Но если база данных есть, то нужно сделать ещё и следующие шаги:
1. Сразу после подключения к БД выполните запрос: SET NAMES UTF-8
2. В phpMyAdmin поменяйте кодировку базы данных на utf8_general_ci в её настройках.
3. Поставьте у всех таблиц кодировку utf8_general_ci.
4. У всех текстовых типов полей так же поставьте кодировку utf8_general_ci.
Всё, теперь Ваша кодировка на сайте изменена. Добавлю лишь, что если где-то в коде Вы занимались преобразованием из одной кодировки в другую (например, через функцию iconv()), то тщательно проверьте это место, возможно, там появится проблема.
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Как изменить кодировку сайта
- Как указать кодировку для сайта
- Смена кодировки базы данных
Если вы перенесли свой сайт на другой хостинг или указали неправильную кодировку, ваш сайт не будет отображаться в сети.
Как указать кодировку для сайта
Чтобы сайт отображался в браузере, укажите для него правильную кодировку. Для этого:
-
Откройте панель управления хостингом ISPmanager и зайдите в корневую папку сайта.
-
Внесите изменения в файл .htaccess. Для этого добавьте в самое начало код:
-
для указания кодировки UTF-8: AddDefaultCharset UTF-8
-
для указания кодировки Windows-1251: AddDefaultCharset WINDOWS-1251
-
Очистите кэш браузера — нажмите сочетание клавиш Ctrl + F5 или Ctrl + R. Затем перейдите на свой сайт — кодировка должна измениться.
Смена кодировки базы данных
-
Войдите в phpMyadmin по инструкции: Работа в phpMyadmin.
-
Кликните на название нужной базы данных и перейдите в раздел Операции:
-
Выберите кодировку для базы данных и нажмите Ок:
-
Очистите кэш браузера — нажмите сочетание клавиш Ctrl + F5 или Ctrl + R. Затем перейдите на свой сайт — кодировка должна измениться.