- Кодировка данных, отправляемых формой
- Неверная кодировка из формы обратной связи
- Полный
- Спасибо сказали:
- Как настроить кодировку сайта самостоятельно
- Зачем нужна кодировка
- Кодировка влияет на SEO?
- Виды кодировок
- Windows-1251
- Как определить кодировку на сайте
- Если кодировка не отображается
- Где указать кодировку сайта
- Кодировка в мета-теге
- Кодировка в файле httpd.conf
- Кодировка в .htaccess
- Кодировка документа
- Кодировка Базы данных
Кодировка данных, отправляемых формой
Данные, отправляемые формой имеют ту же кодировку, что и страница, на которой находится форма. Но как же быть, если страница например в кодировке 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» ); Как настроить кодировку сайта самостоятельно В статье: Разбираем, на что влияет кодировка, нужно ли указывать ее самостоятельно, и почему могут появиться так называемые «кракозябры» на сайте. Зачем нужна кодировкаКодировка (Charset) — способ отображения кода на экране, соответствие набора символов набору числовых значений. О ней сообщает строка Content-Type и сервер в header запросе. Несовпадение кодировок сервера и страницы будет причиной появления ошибок. Если они не совпадают, информация декодируется некорректно, так что контент на сайте будет отображаться в виде набора бессвязных букв, иероглифов и символов, в народе называемых «кракозябрами». Такой текст прочитать невозможно, так что пользователь просто уйдет с сайта и найдет другой ресурс. Или останется, если ему не очень важно содержание: Google рекомендует всегда указывать сведения о кодировке, чтобы текст точно корректно отображался в браузере пользователя. Кодировка влияет на SEO?Разберемся, как кодировка на сайте влияет на индексацию в Яндекс и Google.
Позиция Google такая же. Поисковики не рассматривают Charset как фактор ранжирования или сигнал для индексирования, тем не менее, она косвенно влияет на трафик и позиции. Если кодировка сервера не совпадает с той, что указана на сайте, пользователи увидят нечитабельные символы вместо контента. На таком сайте сложно что-либо понять, так что скорее всего пользователи сбегут, а на сайте будут расти отказы. Поэтому она важна для SEO, хоть и влияет на него косвенно через поведенческие. Пользователи должны видеть читабельный текст на человеческом языке, чтобы работать с сайтом. Виды кодировокСуществует довольно много видов, но сейчас распространены два: Unicode Transformation Format — универсальный стандарт кодирования, который работает с символами почти всех языков мира. Символы могут занимать от 1 до 4 байт, такое кодирование позволяет создавать мультиязычные сайты. Есть несколько вариантов — UTF-8, 16, 32, но чаще используют восьмибитное. Windows-1251Этот вид занимает второе место по популярности после UTF-8. Windows-1251 — кодирование для кириллицы, созданное на базе кодировок, использовавшихся в русификаторах операционной системы Windows. В ней есть все символы, которые используются в русской типографике, кроме значка ударения. Символы занимают 1 байт. Выбор кодировки остается на усмотрение веб-мастера, но UTF-8 используют намного чаще — ее поддерживают все популярные браузеры и распознают поисковики, а еще ее удобнее использовать для сайтов на разных языках. Как определить кодировку на сайтеОпределить кодировку страницы своего или чужого сайта можно через исходный код страницы. Откройте страницу сайта, выберите «Просмотр кода страницы» (сочетание горячих клавиш Ctrl+U» в Google Chrome) и найдите упоминание «charset» внутри тега head. На странице сайта используется кодировка UTF-8: Узнать вид кодирования можно с помощью «Анализа сайта». Сервис проверяет в том числе и техническую сторону ресурса: анализирует серверную информацию, определяет кодировку, проверяет редиректы и другие пункты. С помощью этого же сервиса можно проверить корректность указанного кодирования. Аудит внутренних страниц «Анализа сайта» проверяет кодировку сервера и сравнивает ее с той, которая указана на внутренней странице. Найденные ошибки Анализ покажет в результатах проверки, и вы сразу узнаете, где нужно исправить. Проверить кодировку еще можно через сервис Validator.w3, о котором писали в статье о проверке валидации кода. Нужная надпись находится внизу страницы. Если валидатор не обнаружит Charset, он покажет ошибку: Но валидатор работает не точно: он проверяет только синтаксис разметки, поэтому может не показать ошибку, даже если кодирование указано неправильно. Если кодировка не отображаетсяЕсли вы зашли на чужой сайт с абракадаброй, а вам все равно очень интересно почитать контент, то в Справке Google объясняют, как исправить кодирование текста через браузер. О проблеме возникновения абракадабры на вашем сайте будут сигнализировать метрики поведения: вырастут отказы, уменьшится глубина просмотров. Но скорее всего вы и раньше заметите, что что-то пошло не так. Главное правило — для всех файлов, скриптов, баз данных сайта и сервера должна быть указана одна кодировка. Ошибка может возникнуть, если вы случайно указали на сайте разные виды кодировки. Яндекс советует использовать одинаковую кодировку для страниц и кириллических адресов структуры. К примеру, если робот встретит ссылку href=»/корзина» на странице с кодировкой UTF-8, он сохранит ее в этом же UTF-8, так что страница должна быть доступна по адресу «/%D0%BA%D0%BE%D1%80%D0%B7%D0%B8%D0%BD%D0%B0». Где указать кодировку сайтаЕсли проблема возникла на вашем сайте, способ исправления зависит от вида сайта. Для одностраничника достаточно указать кодировку в мета-теге страницы, а для большого сайта есть разные варианты:
Кодировка в мета-тегеДобавьте указание кодировки в head файла шаблона сайта. При создании документа HTML укажите тег meta в начале в блоке head. Некоторые браузеры могут не распознать указание кодировки, если оно будет ниже. Мета-тег может выглядеть так: В HTML5 они эквивалентны. В темах WordPress обычно тег «charset» с кодировкой указан по умолчанию, но лучше проверить. Кодировка в файле httpd.confИнструкции для сервера находятся в файле httpd.conf, обычно его можно найти на пути «/usr/local/apache/conf/». Если вам нужно сменить кодировку Windows-1251 на UTF-8, замените строчку «AddDefaultCharset windows-1251» на «AddDefaultCharset utf-8».
Убедитесь, что сервер не передает HTTP-заголовки с конфликтующими кодировками. Кодировка в .htaccessДобавьте кодировку в файл .htaccess:
Кодировка документаГотовые файлы HTML важно сохранять в нужной кодировке сайта. Узнать текущую кодировку файла можно через Notepad++: откройте файл и зайдите в «Encoding». Меняется она там же: чтобы сменить кодировку на UTF-8, выберите «Convert to UTF-8 without BOOM». Нужно выбрать «без BOOM», чтобы не было пустых символов. Кодировка Базы данныхВыбирайте нужную кодировку сразу при создании базы данных. Распространенный вариант — «UTF-8 general ci». Где менять кодировку у БД:
С новой БД проще, но если вы меняете кодировку у существующей базы, то у созданных таблиц и колонок заданы свои кодировки, которые тоже нужно поменять. Для всех таблиц, колонок, файлов, сервера и вообще всего, что связано с сайтом, должна быть одна кодировка. Проблема может не решиться, если все дело в кодировке подключения к базе данных. Что делать:
Если вы хотите указать Windows-1251, то пишите не «utf-8», а «cp1251» — обозначение для кодировки Windows-1251 у MySQL. Чтобы установить UTF-8 по умолчанию, откройте на сервере my.cnf и добавьте следующее: Вы когда-нибудь сталкивались с проблемами кодировки на сайте? |