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)«:

Кодировать в UTF-8 (без BOM)

После этого сохраните файл и загрузите его на свой сайт через FTP.

Если вы не знаете, какой из файлов сохранен в неправильной UTF-8 кодировке, то воспользуйтесь специальным скриптом, который найдет все файлы с BOM, которые необходимо пересохранить вышеописанным способом.

Все, на этом задачу с кодировкой можно считать решенной.

P.S. По большому счету, вышеизложенная информация применительна вообще к любым текстовым файлам, а не только к файлам WordPress, но, поскольку я преимущественно работаю с WordPress, то изложил материал в контексте данного движка.

* * *

Для желающих бросить курить в интернет-гипермаркете DigBox.ru осуществляется продажа электронных сигарет — инновационное устройство, имитирующее табакокурение и использующее технологию никотинозаместительной терапии. Позволяет эффективно избавиться от никотиновой зависимости.

Комментарии (25)

  1. 13 мая 2010 г. в 12:23

    Помню сам долго парился с такой проблемой, не мог понять почем модули сьезжают вниз, хотя в html с виду все чисто

  2. 13 мая 2010 г. в 12:32

    у меня для быстрого редактрирования на ftp настроен akelpad, нормально там управление кодировками сделано
    а курьезы конечно были. сложно было как то под убунтой искать левые символы после верстки на винде

  3. 13 мая 2010 г. в 13:06

    С Notepad++ Бывают такие проблемы, что выполнишь перекодировку и сохранишь, а в браузере все равно «кракозябры». Тут приходится переименовывать файл в txt Открывать его в своем любимом ворде и сохранять его как новый файл txt. Вот тогда уже все гуд

  4. Mak
    13 мая 2010 г. в 14:06

    А вообще я считаю что в нормальных редакторах кода такая функция должна быть обязательно. В большинстве есть.

  5. 13 мая 2010 г. в 15:00

    Я тоже горя хапнул с этими бомами и в свое время несколько статей написал по этому поводу на Белой Шляпе. Не помню чей это код, но он загружается в корень сайта и ищет файлы с БОМ, это очень удобно. Периодически я пользуюсь этим скриптом и время от времени он вылавливает неправильные файлы.

  6. Виктор
    13 мая 2010 г. в 22:00

    «необходимо вообще забыть, что существует блокнот Windows» — золотые слова :) а лучше и об Windows забить ;)

    1. Александр
      27 мая 2010 г. в 07:58 / ответ на коммент Виктор

      чувак, я те за это в морду дам…
      твой макинтош или убунта, на хрен не кому не нужна для дома…

    2. Макар
      16 декабря 2010 г. в 14:20 / ответ на коммент Виктор

      Стоит акелпад и блокнот — в акелпаде удобно составлять ТЗ (потому что можно сниппеты делать), но печатать… это жесть.

  7. splean
    14 мая 2010 г. в 04:26

    я бы еще посоветовал дополнить пост и описать что же такое BOM вообще.
    когда столкнулся, так и искал — «что такое BOM»

  8. 14 мая 2010 г. в 10:55

    Известная проблема. Я все файлы редактирую в Dreamweaver’e. Во-первых, он сам ни за что ВОМ-метки не поставит, если файл изначально без них. Во-вторых, очень легко перекодирует, в случает подобных проблем.

  9. Иван
    17 мая 2010 г. в 10:44

    Это проблемка на первом этапе наверное у всех была кто с вордпрессом работал

  10. Денис
    23 мая 2010 г. в 12:28

    Я сам некоторое время назад задавался этим же вопросом. Только у меня проблема с кодировкой была применительно к сайту на Друпале. Решил тем же самым способом с Notepad++ (удобная прога, хотя конечно системных ресурсов требует как 5 блокнотов винды ;) — на старых машинках с кучей одновременных процессов будет тормозить…

  11. serge
    24 мая 2010 г. в 13:01

    Известная проблема. Я все файлы редактирую в Dreamweaver’e.

  12. Настик
    27 ноября 2010 г. в 19:34

    Спасибо огромное за такое подробное описание проблемы! Написано специально «для тех, кто с трудом понимает» и это здорово!
    Я полдня мучалась с WP пока не нашла это простое решение!

  13. kg69design
    28 февраля 2011 г. в 00:42

    Спасибо за совет, а то день промучился в поисках проблемы…

  14. 26 апреля 2011 г. в 18:23

    Блин, четыре дня искал ошибку. Была строка белая в хедере WordPress. Никак не мог избавиться, большое спасибо!

    1. Четыре дня — это очень много для поиска решения подобной проблемы =)

  15. Артём
    12 мая 2011 г. в 10:39

    Коллеги, проблема в следующем: в странице wordpress написал код, который добавляет запись в таблицу базу данных, на самой странице текст отображается русскими буквами, а в БД добавляется в «виде кракозябр»(сам файл в кодировке utf-8). Подскажите как исправить?

  16. 4 февраля 2012 г. в 17:48

    Здравствуйте!
    А не подскажете в чем может быть проблема. Перенес сайт с одного хостинга на другой. В результате комментарии отображаются кракозябрами. Стоит плагин AJAX комментариев, поэтому они добавляются без перезагрузки страницы. Так вот если перезагрузить страницу, то комментарии уже будут в нормальной кодировке.

    Подобный косяк встречал и на других блогах, теперь вот сам столкнулся…

    1. 4 февраля 2012 г. в 18:43 / ответ на коммент Geleosan

      Возможно, причина в самом плагине.

  17. Ольга
    7 октября 2012 г. в 18:20

    Здравствуйте, у меня возникла проблема, не могу войти в админку, выдает ошибку:

    Warning: Cannot modify header information — headers already sent by (output started at /home/countrys/public_html/wp-content/themes/interiorset5/functions.php:13) in /home/countrys/public_html/wp-includes/pluggable.php on line 881

  18. 18 февраля 2013 г. в 01:17

    Здравствуйте. Не знаете, может ли не отображаться реклама из-за того что в их коде присутствует w-1251? Ну а сайт естественно в UTF-8.

    1. 18 февраля 2013 г. в 10:56 / ответ на коммент andrew87

      Не может. Причина в чем-то другом.

  19. максим
    27 июня 2013 г. в 10:14

    привет народ! у меня не работает кодировка utf 8 без ВОМ. Сохраняю документ в нотепад++, и все равно символы отображаются неверно. с чем это может быть связано?

  20. максим
    27 июня 2013 г. в 10:19

    Заметил еще интересную особенность — через оперу отображается отлично, а вот через мазилу одни каракули.

Ваш комментарий

Жирный текст

Ссылка

Цитата

Внутристрочный код

CSS-код

HTML-код

JavaScript-код

PHP-код