- Как правильно задать кодировку для страницы и сайта в целом?
- Как изменить кодировку страницы?
- Перекодирование в UTF-8 на примере PSPad
- Как правильно указать нужную кодировку?
- Как поменять кодировку страниц в Joomla?
- Как поменять кодировку страниц в WordPress и других CMS?
- Выставляем кодировку UTF-8
- Установка локали UTF-8 в PHP
- Setlocale
- Возможен вариант:
- MB_string
- Часовой пояс
- Кодировка контента
- Код целиком
Как правильно задать кодировку для страницы и сайта в целом?
Заметка: активирована адаптивная версия сайта, которая автоматически подстраивается под небольшой размер Вашего браузера и скрывает некоторые детали сайта для удобства чтения. Приятного просмотра!
Доброго времени суток, уважаемые читатели блога Site on! Сегодня речь пойдёт о такой мелочи, как кодировка страниц наших с вами сайтов на Joomla, WordPress и вовсе без CMS. Несмотря на то, что в этом нет ничего сложного, множество людей до сих пор задают вопросы на форумах, связанные с этой проблемой.
Сейчас самой распространённой кодировкой по праву считается UTF-8 и чтобы не растягивать статью не нужными разглагольствованиями просто скажу, что я абсолютно всем рекомендую использовать именно её.
Как изменить кодировку страницы?
Теперь, когда мы знаем, какая кодировка нам нужна, первым делом нужно сохранить все файлы, которые нужно перекодировать в UTF-8 без BOM, это можно сделать с помощью большинства текстовых редакторов для программистов (не Microsoft Office), например, PSPad или Notepad++, а также множество других.
Перекодирование в UTF-8 на примере PSPad
Если Вы используете бесплатный редактор PSPad, то всё что вам необходимо, это открыть в нём нужный файл, выбрать из верхнего меню «Формат» и выбрать из выпавшего списка UTF-8, после чего обратите внимание на смену кодировки в нижнем правом углу вашего окошка с PSPad, незабываем сохранить изменения!
Как правильно указать нужную кодировку?
Данную статью можно было бы поместить в раздел PHP, так как именно PHP играет в нашем спектакле самую значимую роль. Всегда указывайте кодировку страниц ваших сайтов прежде всего через PHP заголовок:
header("Content-Type: text/html; charset=utf-8");
который должен быть как можно выше в вашем коде, обязательно перед первым выводом любого символа на странице (в том числе HTML теги, просто буквы, пробелы). Данный способ является наиболее приоритетным, в то время как мета-тег:
Просто ещё раз подчёркивает и объявляет (а не назначает!) принадлежность к той или иной кодировке, но никак не говорит серверу посылать документы именно в данной кодировке, в отличие от PHP. Именно PHP говорит серверу, на котором находится ваш сайт, в какой кодировке послать страницу клиенту. Так же это можно делать и с помощью .htaccess – файла тонкой конфигурации веб-сервера Apache, но лично мне больше импонирует вариант с PHP. Тем более я слышал, что не все хостеры предоставляют конфигурацию с помощью .htaccess, слава богу не сталкивался 🙂
Итак, после того как мы пересохранили все нужные нам файлы в UTF-8 без BOM и указали кодировку с помощью PHP, остаётся лишь «подтвердить» её мета тегом, который также обязательно нужно указывать! Это рекомендует сам W3C для того, чтобы устройства, роботы и клиентские браузеры могли безошибочно определить, в какой кодировке ваш сервер послал страницу.
Как поменять кодировку страниц в Joomla?
Давайте рассмотрим пример правильного указания кодировки на Joomla 2.5 Это вовсе не сложно и займёт менее минуты:
1) Заходим в главный файл нашего шаблона сайта под названием index.php. Он находится по адресу: /templates/ваш_шаблон/index.php
2) Перекодируем этот файл с помощью текстового редактора для программистов, как было описано для PSPad.
3) Сразу после строки, которая предотвращает прямое обращение к файлу
header("Content-Type: text/html; charset=utf-8");
Если у вас возникли трудности с поиском данной строки, то можете вставить код просто в самом вверху, например, первой строкой файла, главное не забудьте, что PHP код всегда должен быть размещён внутри конструкции В нашем случае:
4) Не забываем проверить, что Joomla поставила правильный мета-тег:
В Joomla 2.5 за вывод мета-тегов и прочей информации, заключённой в «голове» нашего сайта, отвечает следующая конструкция:
Как поменять кодировку страниц в WordPress и других CMS?
Для сайтов на WordPress и любых других сайтов смысл остаётся точно таким же. Вы находите основной файл, отвечающий за вывод информации на вашем сайте, перекодируете его в UTF-8 без BOM, указываете PHP заголовок и мета-тег.
Исключения составляют сайты на чистом HTML, где PHP кода не может быть в принципе. Для таких сайтов можно просто пропустить данный шаг.
Вот и всё на сегодня, спасибо за ваше внимание и до встречи в новых статьях блога о самостоятельном создании и продвижении сайтов – Site on!
Выставляем кодировку UTF-8
На сколько бы это глупо не казалось, но для удачного выставления кодировки необходимо выполнить целых 11(!) правил.
Хочу зарание предупредить, если какая-то из настроек в .htaccess повлечет за собой ошибку 500, это значит, что хостинг запретил менять этот параметр на сервере. В таком случае проверьте тот факт, что у Вас UTF-8 и в случае чего обратитесь к админам хостинга.
И для тех, кто попал на эту страницу с вопросами об Ajax: Ajax работает в кодировке UTF-8.
Правило №1: Указываем в HTML верстке в теге первой строчкой, кроме случаев, где мы будем использовать тег , так как он так же как и кодировка имеет приоритет над расположением, следующий код:
Правило №2: Указываем кодировку для PHP и самого файла, для этого нам необходимо выставить заголовок функцией header(). Выставляем его в самом начале нашего файла (абсолютно в самом начале), сразу после указания уровня вывода ошибок:
Правило №3: Кодировка для подключения к к БД MySQL. Устанавливается после подключения к БД и выбора бд (mysql_connect, mysql_select_db). Если у нас модуль mysql:
Правило №4: Кодировка в .htaccess:
Правило №5: Кодировка для библиотеки mb, начиная с версии php 5.4 можно не указывать, так как по умолчанию будет использоваться именно UTF-8. Ну а пока прописываем её в файле .htaccess:
php_value mbstring.internal_encoding UTF-8
Правило №6: При сохранении файлов (обязательно ВСЕХ!) выбрать кодировку UTF-8 without BOM, повторюсь, without BOM — это необходимая настройка, в противном случае Ваш сайт не будет работать как надо. Для тех, кто пользуется удобной программой DreamWeaver:
Modify => Page Properties => Title/Encoding и выставляем «Encoding: UTF-8», после чего нажимаем ReLoad, убираем галочку с BOM «Include Unicode Signature (BOM)». Apply + OK.
Модификации => Свойства страницы => Заголовок/Кодировка и выставляем кодировку UTF-8. Нажимаем «перезагрузить», убрали галочку с Подключить Юникод Сигнатуры (BOM). Применить и OK.
Правило №7: если на данный момент какой-то из текстов был введён на странице или в БД — его необходимо перенабрать. Дело в том, что символ в одной кодировке представляет один набор бит для русских символов, а в другой — другой. Именно поэтому необходимо его либо перенабрать, либо перекодировать. Современные программы имеют возможность перевести текст из одной кодировки в другую. Об этой возможности интересуйтесь в мануалах Ваших программ.
Правило №8: Есть исключение, когда текст приходит к Вам на страницу с другого сайта в другой кодировке. Тогда на PHP есть удобная функция для перевода из одной кодировки в другую:
Правило №9: Для строковых функций strlen, substr, необходимо использовать их аналоги на библиотеке mb_, а именно: mb_strlen, mb_substr, то есть к функции дописываем mb_ .
Правило №10: Для работы с регулярными выражениями необходимо указывать модификатор u . Это обязательный параметр!
Правило №11: Для CSS файлов указывается кодировка так:
В заключение скажу, что символы в кодировке WIN-1251 состоят из 1 байта, то есть 8 бит, а в свою очередь в кодировке UTF-8 символы могут состоять от 1 до 4 байт, всё дело в том, что кодировка UTF-8 позволяет создавать мультиязычные сайты, так как все существующие в мире символы в ней присутствуют.
Ради любопытства русская буква в кодировке UTF-8 занимает 2 байта, именно поэтому за 1 символ функция strlen возвращает длину 2, то есть 2 байта, а mb_strlen возвращает уже правильную длину в 1 символ.
Школа программирования © 2012-2023
imbalance_hero | inpost@list.ru , admin@school-php.com
account on phpforum | youtube channel
Установка локали UTF-8 в PHP
В любом PHP приложении нужно настраивать локаль и кодировку вне зависимости от настроек сервера. Это предотвратит неверное отображение и работу сайта при переезде на другой хостинг и других ситуаций.
Setlocale
Основная функция, в случаи успеха возвращает устанавливаемое значение или FALSE . Влияет на строковые функции, даты и т.д.
setlocale(LC_ALL, 'ru_RU.utf8');
Возможен вариант:
Вместо LC_ALL можно указать отдельную категорию функций, на которые будет влиять локаль:
- LC_COLLATE – функции сравнения строк,
- LC_CTYPE – функции преобразования и классификации строк,
- C_MONETARYL – для функции localeconv(),
- LC_NUMERIC – задает символ десятичного разделения,
- LC_TIME – форматирование даты/времени,
- LC_MESSAGES – для системных сообщений.
MB_string
Настройка функций для работы с многобайтовыми строками.
mb_internal_encoding('UTF-8'); mb_regex_encoding('UTF-8'); mb_http_output('UTF-8'); mb_language('uni');
Часовой пояс
От него зависит результат работы функций с датами, подробнее о настройке временной зоны.
date_default_timezone_set('Europe/Moscow');
Кодировка контента
Ещё можно явно указать в какой кодировке передается контент, отправив заголовок:
header('Content-type: text/html; charset=utf-8');
Код целиком
// Локаль. setlocale(LC_ALL, 'ru_RU.utf8'); mb_internal_encoding('UTF-8'); mb_regex_encoding('UTF-8'); mb_http_output('UTF-8'); mb_language('uni'); header('Content-type: text/html; charset=utf-8'); date_default_timezone_set('Europe/Moscow');