База знаний

Инструкции и ответы на вопросы о хостинге, работе сайтов и приложений

Как починить кодировку

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

Вы разместили сайт, а вместо статей на нем отображаются такие символы: это сайт Рѕ котиках

Это означает, что браузер не смог правильно распознать кодировку. Определить ее поможет декодер Лебедева.

Скопируйте часть текста и поместите в декодер:

Он расшифрует фразу и выведет название верной кодировки. Здесь это — utf-8.

Если вы видите нечитаемые символы вместо текста на сайте — измените заголовок страниц, кодировку в файлах или базе данных сайта.

Заголовки

Браузер понимает, в какой кодировке отображать текст, с помощью заголовков. Они задаются в файле .htaccess или скриптах сайта.

В первую очередь посмотрите, какие заголовки указаны в файлах:

  • HTML-страница <head>   <title>Заголовок</title>     <meta http-equiv="Content-Type" content="text/html; charset=charset"> </head>
  • PHP-скрипт
    <?php header('Content-Type: text/html; charset=charset');
  • Python header('Content-type: text/html; charset=charset')
  • Perl print "Content-Type: text/html; charset=charset\n\n";

Измените значение параметра «charset», указав кодировку из декодера.

Если в скриптах заголовок не указан, добавьте в файл .htaccess директиву: AddDefaultCharset charset здесь charset — название кодировки из декодера. Например, для utf-8 правило будет выглядеть так: AddDefaultCharset utf-8

Проверьте, верно ли отображаются ваши статьи теперь. Если нет — измените кодировку файлов.

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

Откройте индексный файл с помощью Файлового менеджера в Панели управления. Если вы видите нечитаемые символы — он изначально сохранен в неверной кодировке. Измените ее в нижней части окна редактора и нажмите «Сохранить». Перед внесением изменений создайте резервную копию. Также поменять кодировку можно в текстовом редакторе на компьютере.

Если текст в файлах отображается верно, с помощью Файлового менеджера выполните поиск фразы «ini_set» по содержимому. Измените значение этой функции, указав кодировку из декодера после «default_charset»: ini_set('default_charset','charset');

Если поиск не дал результатов, добавьте в файл .htaccess правило: php_value default_charset "charset" здесь charset — название кодировки из декодера.

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

Кодировка базы данных

Перейдите в раздел «Базы данных» → «PhpMyAdmin» Панели управления, кликните на имя базы данных и посмотрите, какие символы содержатся в таблицах. Если вы видите нечитаемый текст, при импорте была выбрана неверная кодировка.

Подключитесь к серверу по SSH и создайте новый дамп, указав кодировку из декодера в параметре default-character-set: [username@server ~]$ mysqldump -u username -p dbname --default-character-set=charset > dbname.sql

Откройте дамп в текстовом редакторе, найдите команду SET NAMES и укажите кодировку из декодера: SET NAMES charset После этого загрузите новый дамп в базу данных.

Если текст в базе отображается правильно, нужно найти скрипт для подключения к базе данных. Выполните в Файловом менеджере поиск по фразе: «mysql_conn». После mysql_select_db добавьте функцию: mysql_set_charset("charset")  здесь charset — кодировка из декодера.

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

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

Была ли эта инструкция полезной?