Как изменить кодировку на сайте
Перейти к содержимому

Как изменить кодировку на сайте

  • автор:

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

Доброго времени суток, уважаемые читатели блога Site on! Сегодня речь пойдёт о такой мелочи, как кодировка страниц наших с вами сайтов на Joomla, WordPress и вовсе без CMS. Несмотря на то, что в этом нет ничего сложного, множество людей до сих пор задают вопросы на форумах, связанные с этой проблемой.

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

Как изменить кодировку страницы?

Теперь, когда мы знаем, какая кодировка нам нужна, первым делом нужно сохранить все файлы, которые нужно перекодировать в UTF-8 без BOM, это можно сделать с помощью большинства текстовых редакторов для программистов (не Microsoft Office), например, PSPad или Notepad++, а также множество других.

Перекодирование в UTF-8 на примере PSPad

Если Вы используете бесплатный редактор PSPad, то всё что вам необходимо, это открыть в нём нужный файл, выбрать из верхнего меню «Формат» и выбрать из выпавшего списка UTF-8, после чего обратите внимание на смену кодировки в нижнем правом углу вашего окошка с PSPad, незабываем сохранить изменения!

указываем кодировку UTF-8

Как правильно указать нужную кодировку?

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

который должен быть как можно выше в вашем коде, обязательно перед первым выводом любого символа на странице (в том числе HTML теги, просто буквы, пробелы). Данный способ является наиболее приоритетным, в то время как мета-тег: Просто ещё раз подчёркивает и объявляет (а не назначает!) принадлежность к той или иной кодировке, но никак не говорит серверу посылать документы именно в данной кодировке, в отличие от PHP. Именно PHP говорит серверу, на котором находится ваш сайт, в какой кодировке послать страницу клиенту. Так же это можно делать и с помощью .htaccess – файла тонкой конфигурации веб-сервера Apache, но лично мне больше импонирует вариант с PHP. Тем более я слышал, что не все хостеры предоставляют конфигурацию с помощью .htaccess, слава богу не сталкивался 🙂

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

Итак, после того как мы пересохранили все нужные нам файлы в UTF-8 без BOM и указали кодировку с помощью PHP, остаётся лишь «подтвердить» её мета тегом, который также обязательно нужно указывать! Это рекомендует сам W3C для того, чтобы устройства, роботы и клиентские браузеры могли безошибочно определить, в какой кодировке ваш сервер послал страницу.

Как поменять кодировку страниц в Joomla?

Давайте рассмотрим пример правильного указания кодировки на Joomla 2.5 Это вовсе не сложно и займёт менее минуты:

1) Заходим в главный файл нашего шаблона сайта под названием index.php. Он находится по адресу: /templates/ваш_шаблон/index.php

правильная кодировка для Joomla

2) Перекодируем этот файл с помощью текстового редактора для программистов, как было описано для PSPad.

3) Сразу после строки, которая предотвращает прямое обращение к файлу пишем код, который пошлёт заголовок с нашей кодировкой: Если у вас возникли трудности с поиском данной строки, то можете вставить код просто в самом вверху, например, первой строкой файла, главное не забудьте, что PHP код всегда должен быть размещён внутри конструкции <?php ваш код ?> В нашем случае:

4) Не забываем проверить, что Joomla поставила правильный мета-тег:

В Joomla 2.5 за вывод мета-тегов и прочей информации, заключённой в «голове» нашего сайта, отвечает следующая конструкция:

Как поменять кодировку страниц в WordPress и других CMS?

Для сайтов на WordPress и любых других сайтов смысл остаётся точно таким же. Вы находите основной файл, отвечающий за вывод информации на вашем сайте, перекодируете его в UTF-8 без BOM, указываете PHP заголовок и мета-тег.

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

Вот и всё на сегодня, спасибо за ваше внимание и до встречи в новых статьях блога о самостоятельном создании и продвижении сайтов – Site on!

Как поменять кодировку на сайте

Как поменять кодировку на сайте

Меня несколько раз просили написать, как поменять кодировку на сайте. Дело это состоит из нескольких частей, поэтому в двух словах не объяснить. И я принял решение написать эту статью, в которой чётко расписать, что требуется для смены кодировки на сайте.

Давайте с Вами будем переводить сайт в кодировку UTF-8. Если Вы хотите перевести в любую другую кодировку, то всё будет аналогично. Итак, вот порядок действий для этого:

  1. Все текстовые файлы (html, php, js, txt, в общем, в которых есть текст) перекодируйте в UTF-8. Сделать это очень просто через Notepad++ в пункте «Преобразовать в UTF-8 без BOM» из меню «Кодировки«. Причём именно все файлы, которые даже ничего не выводят на страницу.
  2. Поместите в корень сайта файл .htaccess с текстом AddDefaultCharset UTF-8.
  3. Поменяйте кодировку в мета-теге <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()), то тщательно проверьте это место, возможно, там появится проблема.

Если после смены кодировки у Вас что-то отображается не так, то почитайте эту статью: проблемы с кодировкой.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (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-1251\r\n"; если не поможет,то будем разбираться

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

Изменение кодировки сайта в файле .htaccess

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

Как узнать кодировку сайта

Посмотреть кодировку сайта легко — достаточно перейти на любую страницу ресурса и нажать правую кнопку мыши (или сочетание клавиш CTRL+U ), чтобы посмотреть исходный код («View page source» или « Просмотр кода страницы »).

Для поиска нужного мета-тега в коде вызовите функцию поиска сочетанием CTRL+F . Затем в строку поиска необходимо ввести « charset », чтобы отыскать нужное значение.

Общий способ

Одной из наиболее часто встречающихся причин считается неправильно прописанный мета-тег content-type :

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

Редактирование файла .htaccess

Существует несколько способов, как сменить кодировку в файле .htaccess

На всем сайте

Изменить кодировку сайта целиком можно через .htaccess — файл конфигурации, отвечающий за настройку работы веб-сервера Apache.

Принцип редактирования один для всех панелей управления, но для примера рассмотрим одну из них — ISPmanager. Для изменения кодировки через .htaccess в данной панели управления нужно:

    1. Авторизоваться в панели управления в ISPmanager.
    2. Перейти в раздел «Менеджер файлов». Далее перейти в папку «www» и войти в корневую папку WWW-домена (папка с названием сайта).
    3. Выбрав в списке файл .htaccess, нажать на кнопку «Редактировать» → «Открыть».
    4. После этого можно редактировать файл самостоятельно.
    5. Для изменения на стандартный вариант UTF-8, нужно добавить строчку:
    6. Внесение изменений необходимо подтвердить, нажав на кнопку «Сохранить».

    Возможно и обратное изменение для которого добавляется:

    В отдельном файле или группе файлов

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

    В результате, директива AddCharset будет конвертировать указанный файл ( file.html ) в заданную кодировку ( UTF-8 ).

    Этого же результата можно достичь, пользуясь директивой ForceType :

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

    При комплексных сценариях, применяющихся к одному документу, придется учесть порядок расположения расширений. Например:

    Кодировки и веб-страницы

    Возвращаясь к избитой проблеме с кодировками русских букв, хотелось бы иметь под рукой некий единый справочник или руководство, в котором можно найти решения различных сходных ситуаций. В своё время сам перелопатил множество статей и публикаций, чтобы находить причины ошибок. Задача этой публикации — сэкономить время и нервы читателя и собрать воедино различные причины ошибок с кодировками в разработке на Java и JSP и способы их устранения.

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

    Итак, поехали.

    1. Проблема: при получении разработанной мной страницы браузером весь русский текст идёт краказябрами, даже тот, который забит статически.
    Причина: браузер неверно определяет кодировку текста, потому что нет явного указания.
    Решение: явно указать кодировку:
    a) HTML: добавляем тэг META в хидер страницы:

    б) XML: указываем кодировку в заголовке:

    в) JSP — задаём тип контента в заголовке:

    г) JSP — задаём кодировку возвращаемой страницы

    д) Java — устанавливаем хидер ответа:

    2. Проблема: написанный в JSP-странице статический русский текст почему-то идёт краказабрами, хотя кодировка страницы задана.
    Причина: статический текст был написан в кодировке, отличной от заданного странице.
    Решение: изменить кодировку в редакторе (например, для AkelPad нажимаем «Сохранить как» и выбираем нужную кодировку).

    3. Проблема: получаемый из запроса текст идёт кракозябрами.
    Причина: кодировка запроса отличается от используемой для его обработки кодировки.
    Решение: установить кодировку запроса или перекодировать в нужную.
    а) Java, со стороны отправителя не задана нужная кодировка — перекодируем в нужную:

    Примечание: кодировка ISO-8859-1 устанавливается по умолчанию, если не была задана другая.
    б) Java, со стороны отправителя задана нужная кодировка — устанавливаем кодировку запроса:

    4. Проблема: отправленный GET-параметром русский текст при редиректе приходит кракозябрами.
    Причина: упаковка русского текста в URI по умолчанию идёт в ISO-8859-1.
    Решение: упаковать текст в нужной кодировке вручную.
    а) JSP, URLEncoder:

    5. Проблема: текст из базы данных читается кракозябрами.
    Причина: кодировка текста, прочитанного из базы данных, отличается от кодировки страницы.
    Решение: установить соответствующую кодировку страницы, либо перекодировать полученные из базы данных значения.
    а) Java, перекодирование считанной в db_string базы данных строки:

    6. Проблема: текст записывается в базу данных кракозябрами, хотя на странице отображается правильно.
    Причина: кодировка записываемой строки отличается от кодировки сессии работы с базой данных, либо от кодировки базы данных (стоит помнить, что они не всегда совпадают).
    Решение: установить необходимую кодировку сессии или перекодировать строку.
    а) Java, перекодирование записываемой строки db_string в кодировку сессии или базы данных:

    б) Java, MySQL, настройка параметров подключения в строке dburl, передаваемой функции коннекта:

    в) MySQL, настройка параметров подключения в XML-описателе контекста, добавляем атрибут к тегу \<Resource\>:

    г) MySQL, прямая установка кодировки сессии вызовом SET NAMES (connect — объект подключения Connection):

    7. Проблема: если ничего не помогло…
    Решение: всегда остаётся самый «топорный» метод — прямое перекодирование.
    а) Для известной кодировки источника:
    [String MyValue = new String(source_string.getBytes(«utf-8″),»cp1251»);]

    б) Для параметра запроса:
    [String MyValue = new String(request.getParameter(«MyParam»).getBytes(request.getCharacterEncoding()),»cp1251″);]

    Дополнение, или что нужно знать:

    1. Кодировки базы данных и сессии подключения могут различаться, в зависимости от конкретной СУБД и драйвера. К примеру, при подключении к MySQL стандартным драйвером com.mysql.jdbc.Driver без явного указания кодировка сессии устанавливалась в UTF-8, несмотря на другую кодировку схемы БД.
    2. Кодировка упаковки строки запроса в URI по умолчанию устанавливается в ISO-8859-1. С подобным можно столкнуться, например, при передаче явно заданного текста в редиректе с одной страницы на другую.
    3. Взаимоотношения кодировок страницы, базы данных, сессии, параметров запроса и ответа не зависят от языка разработки и описанные для Java функции имеют аналоги для PHP, Asp и других.

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *