- WordPress и кодировка файлов UTF-8 без BOM
- Ежовый угол
- Исправляем кодировки WordPress
- Что делать, если слетела кодировка на wordpress
- Немного пояснений для понимания проблемы
- Что делать:
- Вредные рекомендации по устранению проблемы
- Правильные действия для устранения проблемы
- Как не допустить слета кодировки:
- Заключение
- Домен кириллицей на сайте WordPress: как работать
- Вступление
- Регистрация доменов на кириллице
- Системы кодирования Punycode и домены на кириллице
- Добавляем домен кириллицей на хостинг
- Домен кириллицей на сайте WordPress
- SSL доменов на кириллице
- Установка WordPress на домен кириллицей
- Настройка сайта WordPress с доменом на кириллице
- Настройки постоянных ссылок
- Домен кириллицей в социальных сетях
- Tweeter
- Заключение про домен кириллицей
WordPress и кодировка файлов UTF-8 без BOM
Мне очень часто приходится своим клиентам объяснять нижеизложенную популярную проблему с кодировкой UTF-8, поэтому я написал данную статью, чтобы впредь отправлять их сюда.
Многие владельцы сайтов, в частности работающих на блоговом движке WordPress, редактируют PHP-файлы в блокноте, который прилагается к ОС Windows.
Поскольку сам движок WordPress работает с кодировкой UTF-8, а файлы шаблона, как правило, содержат русские буквы, т.е. кириллицу, то для правильного ее отображения такие файлы также необходимо сохранять в кодировке UTF-8.
Однако блокнот Windows при сохранении в кодировке UTF-8 добавляет в PHP-файлы невидимые символы, называемые BOM (кстати говоря, невидимые они именно в блокноте Винды), которые в результате приводят к тому, что либо на сайте отображается какая-то PHP-ошибка, либо «съезжает» дизайн.
Поэтому решение проблемы очень простое — при работе с кодировкой UTF-8 необходимо вообще забыть, что существует блокнот Windows и вместо него использовать нормальный текстовый редактор, который прекрасно умеет это делать. Например, Notepad++.
После установки Notepad++ откройте в нем целевой PHP-файл и меню выберите «Кодировки -> Кодировать в UTF-8 (без BOM)«:
После этого сохраните файл и загрузите его на свой сайт через FTP.
Если вы не знаете, какой из файлов сохранен в неправильной UTF-8 кодировке, то воспользуйтесь специальным скриптом, который найдет все файлы с BOM, которые необходимо пересохранить вышеописанным способом.
Все, на этом задачу с кодировкой можно считать решенной.
Источник
Ежовый угол
Сеть, Рунет, телеком, Иркутск
Исправляем кодировки WordPress
Если в вашем wp-config.php есть строка
define(‘MAXSITE_DB_CONVERT’, true); # true — разрешить, false — запретить
то вам стоит прочитать статью до конца. Ваш блог на лету конвертирует данные из БД, что не очень хорошо — попросту работа с базой wordpress в phpmyadmin невыносима, русские символы принимают вид:
Сегодня был первый снег. Р’РµС..
А порой могут проявляться проблемы с кодировкой — к примеру, часть комментариев выводится корректно, а часть — абракадаброй. Я рекомендую вам последовать моему совету и перевести БД на UTF8. В будущем это позволит вам избавиться от огромного количества головной боли. Как это сделать — см. ниже.
Технология
Технология проста. У нас есть данные в кодировке latin1 (официальная сборка wp) или cp1251_general_ci (сборка от maxsite и пр.) и их надо перевести в utf8_general_ci. Если сразу менять кодировку — будут теряться данные. Поэтому в качестве промежуточного формата хранения данных мы будем использовать BLOB, т.е. двоичный формат. Благодаря нему мы никакие данные не потеряем и все корректно сконвертируется.
Приступим…
Заходим в phpmyadmin и выбираем одну из таблиц, где содержатся русские символы. Смотрим в колонку «Сравнение» и видим:
То есть кодировка неправильная (нам нужна utf8_general_ci) и поэтому отмечаем поля с неправильной кодировкой галочками и нажимаем «Изменить».
Предварительно запомнив текущий тип данных, меняем его на BLOB.
А теперь возвращаемся к списку полей, выбираем те же поля и вновь меняем их тип. На сей раз указываем старый тип, длину, но на сей раз в поле «Сравнение» указываем utf8_general_ci.
Напоследок правим wp-config.php, указывая теперь запрет смены кодировки
define(‘MAXSITE_DB_CONVERT’, false); # true — разрешить, false — запретить
и, соответственно, корректный список кодировок
define(‘DB_CHARSET’, ‘utf8’); # кодировка базы данных: utf8 или cp1251
define(‘DB_COLLATE’, ‘utf8_general_ci’); # кодировка, в которой хранятся данные: utf8_general_ci или cp1251_general_ci
Источник
Что делать, если слетела кодировка на wordpress
Кодировка на wordpress может слететь по нескольким причинам, в том числе после редактирования ряда файлов. Что делать, если работа с файлом functions.php привела к появлению на экране целой серии непонятных значков и обозначений? Решение проблемы займет немного времени, но не доставит трудностей, если правильно к ней подойти.
Немного пояснений для понимания проблемы
В wordpress по умолчанию установлена кодировка UTF-8. Браузер отображает страницы сайта исключительно в ней. Если файлы сайта необходимо отредактировать, то текстовый редактор необходимо переводить на UTF-8 в обязательном порядке. Это может показаться не слишком удобным – придется немного повозиться с переводом, – зато с технической точки зрения не возникнет никаких осложнений в дальнейшем.
Что делать:
- Отказаться от правки файлов через обычный блокнот.
- Не надеяться на то, что блокнот понимает UTF-8 – он часто допускает сбои.
- Не рассчитывать на то, что через блокнот можно сделать грамотное редактирование.
- Скачать notepad на официальном сайте разработчиков (http://notepad-plus-plus.org/).
- Пользоваться notepad для редактирования движка wordpress.
- Ознакомиться с функционалом notepad, чтобы использовать все допустимые опции в зависимости от нужд редактора.
Вредные рекомендации по устранению проблемы
В Сети встречаются рекомендации по устранению поломки движка сайта, то есть, его файла функции. Одним из предложений по устранению проблемы является вставка «AddDefaultCharset UTF-8» в начало файла htaccess. Такое действие поможет добиться принудительного перехода в требуемую кодировку. Но если проблема возникла после редактирования файла functions.php, то предложенное решение не поможет.
Еще один совет, не приносящий ничего, кроме пустой траты времени, – перебивание кодировки баз данных на требуемую. Эти действия бесполезны по одной простой причине. Если перед началом редактирования файла functions.php запомнить кодировку таблицы баз данных, а затем после редактирования и слета кодировки проверить ее снова, можно заметить, что таблица осталась без изменений.
Правильные действия для устранения проблемы
В первую очередь, очень важно понимать, что в данном случае проблема с кодировкой возникла именно после редактирования файла functions.php, так что действовать нужно соответствующим образом.
Как не допустить слета кодировки:
- Обычно отредактированный файл functions.php сохраняют в недопустимой кодировке. Чтобы проблема в дальнейшем не возникала, сохранять его нужно после всех действий, связанных с редактированием, именно в UTF-8 (без BOM).
- Иногда в файл functions.php вводят лишний символ или пробел. Если его убрать, то кодировка сама восстановится. Если не удастся обнаружить ошибку, можно вернуться к предыдущей версии сайта.
- Стоит обратить внимание на подсказки браузера – если в файле functions.php есть ненужный пробел, то браузер показывает неверную с точки зрения РНР строку. Обычно лишний пробел скрывается именно в ней.
- При неверной вставке функции или кода в файл, подвергающийся редактированию, также слетает кодировка. Браузер сам выдает ошибку. Поэтому достаточно либо устранить ее, либо вернуться к прошлой версии и в этот раз все сделать правильно.
Заключение
Проблемы с кодировкой – явление нередкое. Никаких серьезных последствий они не несут. Исправить ошибки не составляет труда. Достаточно пройтись по приведенному выше списку подсказку, найти подходящий совет и последовать ему. Кроме того, стоит запомнить, что нужно делать, чтобы не допустить повторения проблемы в будущем.
Источник
Домен кириллицей на сайте WordPress: как работать
Вступление
Можно по разному относится к доменам на кириллице, но они на родном языке и с ними нужно научиться работать. В этой статье я покажу, как работает домен кириллицей на сайте WordPress.
Регистрация доменов на кириллице
Я должен пояснить, что домен на кириллице это домен в национальной зоне (IDN) c доменным именем и доменной зоной, написанных русскими буквами, то есть кириллицей. Альтернатива кириллице, так называемая латиница.
При регистрации доменов на кириллице нужно учесть следующее:
Во-первых, не все регистраторы занимаются регистрацией кириллических доменов в национальных доменных зонах.
Во-вторых, если вам нужна доменная зона на кириллице, например .рф, .рус, то вы в этой зоне сможете зарегистрировать доменное имя только на кириллице. Например, твойсайт.москва.
В то же время, в доменных зонах на латинице, например, .com или .net, вы можете зарегистрировать доменное имя, как на латинице, так и на кириллице. Например, такой домен твойсайт.net.
В третьих, не все доменные зоны поддерживают национальные IDN домены. Перечислю популярные из поддерживающих: net/com/cc/tv/name/tel/москва/рф/сайт/онлайн/su.
Теперь по работе. Регистрация доменов на кириллице ничем не отличается от регистрации латинских доменов. Однако учтите следующие запреты.
При регистрации кириллических доменов не разрешается:
- Использовать в имени домена букв из различных алфавитов. Например, русского и белорусского ;
- Запрещено использовать несуществующие символы;
- В доменных зонах tel и org нельзя зарегистрировать зеркальные доменные имена существующие на латинице, только на русском языке.
Например, есть зарегистрированных домен на латинице: papea.tel, а вы пытаетесь зарегистрировать домен на кириллице рареа.tel, написанный русскими буквами.
Системы кодирования Punycode и домены на кириллице
Это важно для работы на сайтах WordPress и не только для них.
Система доменных имён (DNS) не умеет «читать» кириллицу, она её не воспринимает. Поэтому все домены на кириллице система DNS и все системы которые к ней обращающиеся (браузеры, боты, от части поисковики) автоматически кодируют ваш кириллический домен по системе Punycode.
Отсюда появляются «страшные домены» типа: xn—-8sbdbkg5djhcmad.xn--p1ai. Кстати, это кодировка домена: вордпресс-абс.рф.
Чтобы закодировать свой домен на кириллице воспользуйтесь любым Punycode конвертером, найти их просто.
Мой регистратор доменов сразу пишет мне домен на кириллице в двух вариантах, один в Punycode.
Итак, после регистрации домена на кириллице у вас, кроме всего прочего, для дальнейшей работы на WordPress, должен быть под рукой ваш домен в кодировке Punycode.
Для проверки правильности кодировки вставьте кодированных домен в адресную строку браузера, он переведёт его в понятный вид.
Добавляем домен кириллицей на хостинг
Как видите, проблемы, а вернее стандартные работы, с доменами на кириллице разрастаются. Пора добавить кириллический домен на хостинг. У меня панель хостинга DirectAdmin, поэтому скрины на ней.
На вкладке «Добавить домен», просто добавить домен на кириллице, написанный русскими буквами не получиться. О чем свидетельствует это скрин.
Что делать? Правильно! Добавить кириллический домен в кодировке Punycode.
Домен добавился в список доменов (Фото 1) и доступен по FTP (фото 2).
Фото 1
Фото 2
Домен кириллицей на сайте WordPress
Итак, домен кириллицей добавлен на хостинг и доступен по FTP. Пора установить в его корневую папку CMS WordPress.
SSL доменов на кириллице
Перед установкой CMS, включу на своём хостинге SSL режим для «русского» домена.
Не буду показывать, как это делать. Об этом в статье тут. Просто замечу, что я использую бесплатные и автоматические сертификаты от Let’s Encrypt и никаких проблем отличных от доменов на латинице, для доменов на кириллице в добавлении ключей нет. Только помним, что работаем с нашим доменом в Punycode.
Установка WordPress на домен кириллицей
Я уверен, что вы уже умеете устанавливать CMS WordPress в корневую папку вашего домена. Последняя статья сайта на эту тему тут. После работы по FTP, пишем в браузер имя домена по русски, можно в Punycode.
Настройка сайта WordPress с доменом на кириллице
Далее обычная настройка сайта WordPress, только с кириллическим доменом в кодировке Punycode.
Везде, где вы ранее в настройках писали домен на латинице, пишите кириллический домен в Punycode. Напомню, что прописку домена мы проверяем в настройках:
Общие→Адрес WordPress (URL)/Адрес сайта (URL)
SSL сайта не включен
Настройки постоянных ссылок
Вот мне интересно, когда вы используете домен кириллицей на сайте WordPress, вы как хотите видеть URL адреса сайта в кириллице или латинице?
Если в кириллице выбирайте на вкладке «Настройки постоянных ссылок» оптимизированный тип ссылки «Произвольно» в формате /%category%/%postname%/ и больше ни о чём не думайте.
Кстати в этом случае, ваши ссылки фактически будут иметь такой закодированный вид:
Если хотите, чтобы страницы рубрик и меток вашего сайта имели русские префиксы, то прописываете их русскими буквами в настройках «Дополнительно» в настройках постоянных ссылок.
Если хотите, чтобы домен был на русском, а всё остальное URL на латинице, то, как обычно, ставите один из плагинов транслитерации, например, Cyr-To-Lat. После настройки плагина ваши URL сайта будут комбинированные.
Домен кириллицей в социальных сетях
Для раскрутки и продвижения сайта добавим его в социальные сети. Остановлюсь на Facebook и Tweeter.
Данная сеть не видит, что не удивительно, доменов на кириллице. Опять добавляем сайт страницы Facebook в Punycode.
Tweeter
Эта сеть сама кодирует кириллический домен в Punycode (в настройках профиля).
Заключение про домен кириллицей
Вы наверняка поняли суть проблемы и её решение. Для большинства сервисов и систем ваш сайт существует не в домене на кириллице, а в Punycode. Русские буквы, которые вы видите в URL в адресе браузера, в ссылках будут превращаться в закодированные знаки.
В общем и целом, на сегодня 22-10-2019, домен кириллицей на сайте WordPress работает и проблем я с ним не вижу. Удобств мало, а проблем нет. Или я их просто пока не вижу? В следующей статье посмотрим, как к кириллице относятся базовые плагины для сайта.
Источник