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, которые необходимо пересохранить вышеописанным способом.

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

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

* * *

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

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

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

  2. 2

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

  3. 3

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

  4. 4
    Mak

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

  5. 5

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

  6. 6
    Виктор

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

  7. 9
    splean

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

  8. 10

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

  9. 11
    Иван
    @

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

  10. 12
    Денис

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

  11. 13
    serge

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

  12. 14
    Настик

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

  13. 15
    kg69design

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

  14. 16

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

  15. 18
    Артём

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

  16. 19
    @

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

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

  17. 21
    Ольга
    @

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

    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. 22
    @

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

  19. 24
    максим
    @

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

  20. 25
    максим
    @

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