Решаем проблему с Юникодом в 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 [13547 просмотров]
К этой статье пока нет комментариев, Ваш будет первым
Все текстовые (php
) файлы на сайте кодированы в UTF-8 без BOM
(NotePad++
). На сайте все отображается как и должно.
Если полностью скопировать сайт на локальную машину и запустить в DENWER
, то вылезают крокозябры. Если сменить в блокноте кодировку файлов на ANSI
, то все отображается правильно.
Вопрос: можно ли заставить DENWER
понимать UTF-8
? Потому что кодировать все файлы туда-сюда довольно утомительно.
HELO WORD
1,8211 золотой знак11 серебряных знаков23 бронзовых знака
задан 23 фев 2014 в 13:35
oleg_ismaylovoleg_ismaylov
8609 золотых знаков30 серебряных знаков59 бронзовых знаков
0
Как всегда нашел ответ, когда уже написал вопрос…
Вопрос решается так: берем /usr/local/apache/conf/httpd.conf, открываем. Ищем строку “AddDefaultCharset windows-1251″ и меняем её на “AddDefaultCharset utf-8″.
Это один из способов.взял отсюда.
P.S. Не удаляю вопрос, потому что может кому-нибудь он да поможет.
ответ дан 23 фев 2014 в 13:40
oleg_ismaylovoleg_ismaylov
8609 золотых знаков30 серебряных знаков59 бронзовых знаков
3
Не так давно публиковал пост “Выбираем кодировку: 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…
01.04.2014
Как изменить кодировку Денвера
У пользователей сборки Денвер часто возникает проблема с отображением текстового содержимого сайта (текст отображается в виде кракозябр или вопросительных знаков в ромбиках):
Далее под словом «Денвер» будет подразумеваться сервер 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…
01.04.2014
Решаем проблему с Юникодом в 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 [13281 просмотр]
К этой статье пока нет комментариев, Ваш будет первым
При работе с локальным сервером (установленном на своем компьютере), возникает проблема с кодировкой страниц.
Сам Денвер по умолчанию, запрограммирован обычно под windows 1251, может быть и другая кодировка, что в данном случае не столь важно, а при верстке сайта, рекомендовано устанавливать кодировку charset=utf-8, особенно при разработке сайтов на PHP и в результате в окне браузера можно будет увидеть очень веселую кряко-абра-кадабру. Но такая проблема решается очень просто. Я покажу на основе своего Денвера, а отличия могут быть не значительные и легко находимы.
Путь для смены кодировки на локальном сервере:
Z -> usr -> local -> apache -> conf -> httpd.conf:
- заходим в диск Z и открываем папку usr
- в папке usr открываем папку local
- дальше нужно открыть папку apache и в ней открыть папку conf.
- в папке conf найти файл httpd.conf и открыть его программой Блокнот.
- найти строку AddDefaultCharset windows-1251 и изменить, например на AddDefaultCharset utf-8.
После перезагрузки Денвера и очистки кэша браузера, все будет работать как вам нужно.
Можно сделать еще по-другому. Найти в том-же файле httpd.conf строку с установкой кодировки, и закомментировать — #AddDefaultCharset windows-1251, тогда будут действовать установки сайта, прописанные в < meta http-equiv=»content-type» content=»text/html; charset=utf-8″ />, что бывает очень удобно. Я так делаю и вам советую.
Источник http://kapon.com.ua/kod_v_denver.php
Последние статьи
Не так давно публиковал пост “Выбираем кодировку: 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“, за что ему очень благодарен.
Неверное отображение кодировки в браузере, или же просто крякозябры — так их иногда называют. С этой проблемой сталкивался каждый разработчик сайтов и веб-приложений. Особенно это актуально при тестировании сайтов и скриптов на локальном компьютере (локальном сервере).
Лично я всегда использовал самый популярный локальный сервер — Денвер. Иногда приходилось долго возиться с файлами чтобы решить вопрос с кодировкой. Получалось так, что при тестировании на локальном сервере всё отображается как надо, но при загрузке сайта на хостинг начинаются проблемы с кодировкой. Изменение кодировки в конфигурационном файле Денвера, может значительно упростить тестирование сайта на локальном компьютере.
Чтобы изменить кодировку в Денвере, делаем следующее. Находим файлик: httpd.conf. Путь к файлу: C/Webservers/usr/local/apache/conf/httpd.conf.
Открываем файл редактором Notepad++, и примерно на 500-й строке ищем строку: #AddDefaultCharset utf-8. И меняем настройки как нам нужно.
Таким образом, можно либо закомментировать данную настройку символом #, либо наоборот.
После изменения файла конфигурации Денвер: httpd.conf, не забываем перезагрузить локальный сервер.
Еще по теме:
В очередной раз обновив любимый мой Denwer (Джентльменский набор Web-разработчика) столкнулся с проблемой слетевшей на windows-1251 кодировки для разных проектов. На этот раз решил записать решение сюда, так как добавлять во все проекты AddDefaultCharset во все проекты приходится не только мне.
Суть проблемы заключается в том, что в веб-сервере Apache по умолчанию установлена кодировка windows-1251. Для изменения стандартной кодировки есть два варианта решения.
Использовать локальные настройки для проекта. Для этого берем имеющийся в проекте .htaccess или создаем его при отсутствии. И прописываем в него:
AddDefaultCharset utf-8
Данное решение работает, но не является хорошим решением, так как все время следить за .htaccess идеологически не верно. Поэтому воспользуемся вторым вариантом, а именно глобальным изменением кодировки в настройках сервера. Для этого в папке настроек Apache в денвере (головная_папка_Денвер/usr/local/apache/conf/) находим файл httpd.conf и изменяем в нем строку:
AddDefaultCharset windows-1251
на
AddDefaultCharset utf-8
После этого достаточно перезагрузить Denwer и все. Можно воспользоваться патчем, о том, как я их использую под windows напишу как-нибудь в другой раз.
Все текстовые (php
) файлы на сайте кодированы в UTF-8 без BOM
(NotePad++
). На сайте все отображается как и должно.
Если полностью скопировать сайт на локальную машину и запустить в DENWER
, то вылезают крокозябры. Если сменить в блокноте кодировку файлов на ANSI
, то все отображается правильно.
Вопрос: можно ли заставить DENWER
понимать UTF-8
? Потому что кодировать все файлы туда-сюда довольно утомительно.
HELO WORD
1,8211 золотой знак11 серебряных знаков23 бронзовых знака
задан 23 фев 2014 в 13:35
oleg_ismaylovoleg_ismaylov
8609 золотых знаков30 серебряных знаков59 бронзовых знаков
0
Как всегда нашел ответ, когда уже написал вопрос…
Вопрос решается так: берем /usr/local/apache/conf/httpd.conf, открываем. Ищем строку “AddDefaultCharset windows-1251″ и меняем её на “AddDefaultCharset utf-8″.
Это один из способов.взял отсюда.
P.S. Не удаляю вопрос, потому что может кому-нибудь он да поможет.
ответ дан 23 фев 2014 в 13:40
oleg_ismaylovoleg_ismaylov
8609 золотых знаков30 серебряных знаков59 бронзовых знаков
3