Денвер ошибка кодировки

Решаем проблему с кодировкой UTF-8 в Denwer'e

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

На самом деле, причины для возникновения таких проблем могут быть абсолютно разные. Сейчас же я расскажу Вам только про одну из них, а именно про проблему, связанную с кодировкой, установленной в настройках Denwer’a по-умолчанию. Причем, в действительности, с ней можно столкнуться абсолютно на любом Apache-сервере. Просто я буду описывать необходимые действия именно в тех условиях, которые были у меня.

Заключается проблема в том, что в конфигурационном файле Денверовского Apache-сервера в качестве дефолтной кодировки красуется “Windows-1251″, по этой причине в браузеры насильно передается инструкция использования именно этой кодировки для чтения открываемых сайтов. Очень часто эта инструкция воспринимается как основополагающая, и браузер не обращает внимания на то, что Вы передаете  с помощью мета-тега “<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>” или через параметр header в PHP.

Для того, чтобы исправить это, нам необходимо поменять эту самую инструкцию. Сделать это мы можем одним из двух описанных ниже способов…

Способ №1 – редактируем файл httpd.conf

httpd.conf отвечает за глобальные инструкции для сервера, т.е. внесенные в него изменения повлияют на все сайты, которые у нас будут храниться на сервере. Располагается он в каталоге /usr/local/apache/conf/. Отредактировать нам требуется всего одну строку: ищем “AddDefaultCharset windows-1251″ и меняем её на “AddDefaultCharset utf-8″.

Способ №2 – редактируем файл .htaccess

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

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

CharsetDisable on
CharsetDefault utf-8
CharsetSourceEnc utf-8
AddDefaultCharset utf-8

Лично я выбрал кардинальный способ решения проблемы и отредактировал файл httpd.conf, так как я все равно собрался все расположенные на Денвере проекты перегнать в UTF-8. Буду рад, если описанные мною методы помогут кому-либо ещё. Если знаете другие варианты решения вышеупомянутой проблемы – поделитесь, обязательно опубликую их _)

P.S: Только что получил от автора блога “SEOGramota.ru” инвайт для регистрации в социальной сети для блогеров “Webice.ru“, за что ему очень благодарен.

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

У пользователей сборки Денвер часто возникает проблема с отображением текстового содержимого сайта (текст отображается в виде кракозябр или вопросительных знаков в ромбиках):

Кракозябры

Далее под словом «Денвер» будет подразумеваться сервер Apache, который входит в состав сборки.

Это может происходить по одной из следующих причин:
текст имеет кодировку, которая не соответствует указанной в документе или передаваемой сервером;
кодировка документа указано неверно;
сервер отдаёт документ, указывая неправильную кодировку.

Первые две причины рассмотрены в посте «Кодировка HTML-документа» и не касаются текущей темы, так как здесь мы будем рассматривать проблемы, связанные с кодировкой Денвера.

Денвер по умолчанию использует кодировку Windows-1251, поэтому если текст страницы закодирован в ней же и она указана в соответствующем атрибуте элемента <meta>, то проблем возникать не будет. Однако, если текст преобразовать в UTF-8, то, при открытии документа в браузере, весь он превратится в стаю кракозябр и даже не поможет «метауказание» кодировки.

Решить вышеописанную проблему просто — нужно изменить кодировку, которую отдаёт сервер, на UTF-8. Это можно сделать двумя путями:
изменить кодировку сервера;
изменить кодировку сайта.

Меняем кодировку сервера

Чтобы изменить кодировку сервера, нужно отредактировать файл httpd.conf, который находится в папке Денвера по адресу /usr/local/apache/conf (открыть его можно с помощью Блокнота или другого текстового редактора). В этом файле, в 498 строке, будет следующая запись:

AddDefaultCharset windows-1251

Кодировка Денвера по умолчанию

В этой записи, вместо Windows-1251, нужно указать UTF-8 (регистр значения не имеет) и, сохранив изменения, перезапустить сервер (обязательно).

Меняем кодировку сайта

Чтобы изменить кодировку определённого сайта, понадобиться файл .htaccess. В нём нужно прописать такую же строку, как и в примере выше (AddDefaultCharset UTF-8), а затем поместить его в корень проекта.

Подробнее об этом способе и о файле .htaccess рассказано в посте «Кодировка HTML-документа».

  • Кодировка HTML-документа
  • Решаем проблему с кодировкой UTF-8 в Denwer’e…

Все текстовые (php) файлы на сайте кодированы в UTF-8 без BOM (NotePad++). На сайте все отображается как и должно.

Если полностью скопировать сайт на локальную машину и запустить в DENWER, то вылезают крокозябры. Если сменить в блокноте кодировку файлов на ANSI, то все отображается правильно.

Вопрос: можно ли заставить DENWER понимать UTF-8? Потому что кодировать все файлы туда-сюда довольно утомительно.

HELO WORD's user avatar

HELO WORD

1,8211 золотой знак12 серебряных знаков23 бронзовых знака

задан 23 фев 2014 в 13:35

oleg_ismaylov's user avatar

oleg_ismaylovoleg_ismaylov

86010 золотых знаков30 серебряных знаков59 бронзовых знаков

0

Как всегда нашел ответ, когда уже написал вопрос…

Вопрос решается так: берем /usr/local/apache/conf/httpd.conf, открываем. Ищем строку “AddDefaultCharset windows-1251″ и меняем её на “AddDefaultCharset utf-8″.

Это один из способов.взял отсюда.

P.S. Не удаляю вопрос, потому что может кому-нибудь он да поможет.

ответ дан 23 фев 2014 в 13:40

oleg_ismaylov's user avatar

oleg_ismaylovoleg_ismaylov

86010 золотых знаков30 серебряных знаков59 бронзовых знаков

3

Столкнулся с проблемой кодировки на локальном веб-сервере Denwer. В файле HTML явно задана кодировка UTF-8 — <meta charset=’UTF-8′>, но в браузере вместо кириллицы отображаются кракозябры. Проблема в настройках веб-сервера Apache, где задана кодировка “Windows-1251″. Чтобы ее решить нужно отредактировать файл httpd.conf, который находится на виртуальном диске (создается при запуске Denwer, в моем случае X:\) в каталоге X:\usr\local\apache\conf\. Ищем строку AddDefaultCharset, комментируем ее символом #, и дописываем новую строку «AddDefaultCharset utf-8».

denwer utf8 thumb Кракозябры в Denwer’е

Сохраняем файл и перезапускаем Denwer. Проблема решена.

Есть еще вариант применить этот параметр не для всего сервера, а только для одного сайта. Для этого нужно создать файл .htaccess, добавить одну строку — «AddDefaultCharset utf-8» и сохранить его в корне каталога www интересуещего нас сайта. И не забыть перезапустить Denwer.

Решаем проблему с Юникодом в Denwer’e

Многие (особенно начинающие) разработчики на постсоветском пространстве используют для локального написания PHP-скриптов этот славный пакет. Однако, даже прописав в скрипте правильный тип документа

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

и, шагая в ногу со временем, указав на своих страницах мета-тег Юникода

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

они получают на локалхосте «кракозябры» вместо кириллицы, при том, что на хостинге всё отображается нормально.

Или просто

<!DOCTYPE html>

и

<meta charset="utf-8">

для HTML5 — на наличие проблемы это никак не влияет :)

Проблема заключается в том, что даже в свежих сборках Denwer’а
в конфигурационном файле встроенного Apache-сервера кодировкой по умолчанию красуется Windows-1251. По этой причине в браузеры насильно передается инструкция использования именно этой кодировки для чтения открываемых сайтов. Обычно эта инструкция воспринимается браузером как имеющая более высокий приоритет, и браузер уже не обращает внимания, что вы передаёте содержимое в другой кодировке.

Решить проблему можно одним из двух способов:

1. Отредактировать файл конфигурации Apache httpd.conf и заставить Denwer забыть о Windows-1251.

Файл с указанным именем находится в папке /usr/local/apache/conf/ созданного Denwer’ом логического диска (по умолчанию z:). Редактировать можно любым текстовым редактором, даже Блокнотом. Просто находим (комбинация клавиш Ctrl+F) строку с записью

AddDefaultCharset windows-1251 

и меняем её на

AddDefaultCharset utf-8

После этого перезапускаем Денвер. Сделанное изменение повлияет на все локальные сайты, так что если такой путь не подходит, используйте вариант 2, тем более, он и на реальном хостинге поможет.

2. Создать для сайта собственный файл .htaccess

Этим способом мы меняем кодировку, подставляемую по умолчанию для конкретного сайта или определённого каталога на сайте, например, если сайт находится на диске Денвера по адресу
z:/home/localhost/www/mysite (т.е. представляет собой вложенную в корень сайта папку, к которой можно обращаться браузером по URL-адресу http://localhost/mysite/ ), то в этой папке нам надо создать файл с именем .htaccess (да-да, имя именно начинается с точки, «как это» — см. ниже) и указать там ту же волшебную строку:

AddDefaultCharset utf-8

Проверено, работает. Ну а я Денвером не пользуюсь, так что у меня работает и так :)

Для создания файла, имя которого начинается с точки, используйте не окошечко Windows, а любой нормальный файл-менеджер, такой как Far Manager или Total Commander.

15.10.2014, 10:27 [13681 просмотр]


К этой статье пока нет комментариев, Ваш будет первым

Понравилась статья? Поделить с друзьями:
  • Дельта ошибка al 006
  • Демрад солярис ошибки
  • Дельта asda a2 ошибки
  • Демрад калисто ошибки
  • Делфи ошибка при инициализации mci