Кодировка windows 1251 в сайтостроении
Кодировка windows 1251 была создана в начале 90 годов для русификации программных продуктов, выпускаемых корпорацией Microsoft :
- 0xFF (25510) – это код, который зарезервирован для символа «я». В программах, которые не поддерживают чистый 8-ой бит, часто возникают непредсказуемые проблемы;
- Нет псевдографики, которая присутствует в KOI8 , CP866 .
Ниже приведены символы из Code Page 1251 или сокращенно СР1251 ( числа под символами являются кодом в шестнадцатеричной системе такого же символа в Юникоде ):
Кодировка windows 1251 в html
Нередко у web-разработчиков и блогеров, обладающих различной квалификацией возникает проблема с кодировкой страниц: вместо подготовленного текста появляются неизвестные, нечитаемые символы. Чтобы разобраться с данной проблемой, необходимо понимать суть термина « кодировка страницы ».
Текст в памяти компьютера хранится в виде определенного количества байт, а не в том виде, в котором он отображается в текстовом редакторе. Каждый байт является кодом, который соответствует одному символу. Для того чтобы текст на странице отображался как следует, нужно сообщить браузеру, какую таблицу кодов для расшифровки и отображения он должен использовать.
Таблица кодировок не является универсальной, то есть, для расшифровки текста необходимо использовать ту, которая соответствует кодировке символов:
— между тегом и закрывающим его нужно прописать — исходя из этой строки, браузер будет использовать символы русского алфавита для отображения текста на странице.
Кодировка windows 1251 в PHP
Ни для кого не является тайной, что генерация страниц проходит путем выборки и использования какой-то части информации, которая хранится в базе данных. При написании сайта на PHP , чаще всего это mysql :
Для согласования расшифровки необходимо выполнить функцию mysql_query(«SET NAMES cp1251») – это означает, что преобразование из машинного кода будет осуществляться согласно таблице cp1251 .
Кодировка windows 1251 в htaccess
При создании сайта, предварительно настроив кодировки в шаблонах и базах данных, все равно может всплыть проблема некорректного отображения информации в браузере.
Для того чтобы для веб-ресурса была задана кодировка виндовс-1251 , необходимо найти ( или создать ) файл .htaccess . Это файл, который хранит в себе дополнительные настройки и описания конфигураций web-сервера.
В нем для установки кодировки следует прописать следующие строки:
- DefaultLanguage ru;
- AddDefaultCharset windows-1251;
- php_value default_charset «cp1251».
Таким образом, для корректного отображения текста должны совпадать его кодировка и таблица кодов, с помощью которой браузер будет расшифровывать символы. Для текстов, написанных на славянских языках, необходима win 1251 кодировка. Важно помнить, что элементы страниц и баз данных должны быть описаны с помощью одной таблицы кодов.
Кодировка данных, отправляемых формой
Данные, отправляемые формой имеют ту же кодировку, что и страница, на которой находится форма. Но как же быть, если страница например в кодировке UTF-8, а надо чтобы данные отправлялись в кодировке windows-1251. Конечно есть такой вариант, как сменить кодировку у страницы. Но это не всегда возможно, сайт — CMS уже настроена на работу с конкретной кодировкой.
Поменять кодировку отправляемых формой данных можно прописав у тега form атрибут accept-charset=»нужная кодировка». Например:
В этом случае в независимости от кодировки страницы данные формы будут в кодировке windows-1251.
UPD
Но! Как выяснилось этот атрибут не поддерживается горячо «любимом» браузере Internet Explorer до 7 версии включительно.
В последующих реализовано, но имеются ошибки. Internet Explorer содержит ошибку при использовании кодировки ISO-8859-1, в этом случае браузер отправляет данные в кодировке Windows-1252.
К сожалению всё предыдущее решение ломается, так как этот браузер на данный момент игнорировать нельзя. Но думаю в скором будущем — через год, можно будет забыть про IE 6, так как его процент стремительно падает. Так же можно будет забыть IE7, так как к моей радости благодаря выпуску IE 8 он не обрёл такую большую популярность. Да и политика от мелкомягких к счастью сменилась. Выпускают более новые браузеры и от старых стараются отказываться.
Как бы то ни было, проблему с кодировкой кроссбраузерно можно решить следующим методом.
Подключаем в нужном месте на странице с кодировкой UTF-8 файл с формой посредством iframe. Подключаемый файл должен иметь нужную кодировку, например windows-1251. Тогда форма будет отправлять данные в нужной — windows-1251 кодировке.
Для красоты у iframe ставим высоту, ширину, чтобы форма была видна. Убираем скроллинг в любой ситуации. Убираем рамки. Это всё для того, чтобы не было видно, что форма находится в iframe.
Неверная кодировка из формы обратной связи
Опции темы
Установлен шаблон на WordPress. Прописана форма обратной связи, которая отправляет сообщения на указанный в настройках темы адрес. Проблема в том, что адрес (@mail.ru) и веб-интерфейс этого почтовика не понимает кодировки сообщения. Вот так не понимает:
Если указать почту на гмейл, все корректно отображается. Стоить забор почты с мейлу на гмейл, и собранное письмо с мейл.ру на гмейле тоже отображается. Проблема только в мейлру, которому что-то непонятно..
От себя добавлю, что пробовал дописывать $mailheaders = «Content-type:text/plain;charset=windows-1251rn»;, но не помогает.
Полный код файла:
Полный
Код, который, по моему мнению, нужно подправить (дописать чо-нить :))
$from_name = $_POST [ ‘your_name’ ];
$from_email = $_POST [ ’email’ ];
$message = ‘Имя: ‘ . $from_name . PHP_EOL ;
$message .= ‘Email: ‘ . $from_email . PHP_EOL . PHP_EOL ;
$message .= ‘Сообщение: ‘ . PHP_EOL . $_POST [ ‘message’ ];
echo THANKYOU_MESSAGE ;
echo ‘
exit;
>
else
<
echo ERROR_MESSAGE ;
Прошу помощи
Последний раз редактировалось ADvi; 01.07.2012 в 19:59 .
- 0
ADvi
| |
Спасибо сказали:
mail(DEST_EMAIL, SUBJECT_EMAIL, $message, «Content-Type: text/plain; windows-1251» ); |