php header content type text html charset utf 8

Кодировка заголовка при отправке на почту письма

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

Для примера, у меня приходит такого формата:
чоп-СЃР±СЃ.СЂС

Помощь в написании контрольных, курсовых и дипломных работ здесь.

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8Кодировка при отправке на почту
Вечер добрый, отправляю на почту письмо и летит кодировка! Я уже все перетыкал перепробовал (( 10

Решение

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Ошибка по отправке письма на почту
Как Вы поняли у меня ошибка не отправляется письмо на почту при восстановлении пароля! Пароль.

Косяки при отправке письма на почту
Всем привет. Возникла следующая проблема. Отправляю на почту письмо функцией mail. Вся.

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8Кодировка при отправке письма
Добрый день, подскажите как исправить корявую кодировку. Отправляю письмо с помощью компонента.

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8Кодировка при отправке письма
Добрый день, подскажите как исправить корявую кодировку. Отправляю письмо с помощью компонента.

Источник

How to set HTTP header to UTF-8 using PHP which is valid in W3C validator

I have several PHP pages echoing out various things into HTML pages with the following code.

However, when I validate using the W3C validator it comes up with:

The character encoding specified in the HTTP header (iso-8859-1) is different from the value in the element (utf-8).

I am quite new to PHP, and I was wondering if I could and should change the header for the PHP files to match the HTML files.

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

7 Answers 7

Use header to modify the HTTP header:

First make sure the PHP files themselves are UTF-8 encoded.

The meta tag is ignored by some browser. If you only use ASCII-characters, it doesn’t matter anyway.

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

This is a problem with your web server sending out an HTTP header that does not match the one you define. For instructions on how to make the server send the correct headers, see this page.

Otherwise, you can also use PHP to modify the headers, but this has to be done before outputting any text using this code:

More information on how to send out headers using PHP can be found in the documentation for the header function.

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

You can also use a shorter way:

See RFC 2616. It’s valid to specify only character set.

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

For a correct implementation, you need to change a series of things.

Database (immediately after the connection):

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

PHP sends headers automatically if set up to use internal encoding:

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

the «UTF-8» is the default value and its value is used as the default character encoding for htmlentities(), html_entity_decode() and htmlspecialchars() if the encoding parameter is omitted.

It is set on default php.ini as «UTF-8» on the «Data handling» section as:

Also, you can set, before the content, the header to another encoding as needed:

or any other charset you need to declare.

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

Not the answer you’re looking for? Browse other questions tagged php html http-headers or ask your own question.

Linked

Related

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.9.17.40238

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

Решение проблем неправильной кодировкой веб-страницы

При неправильной кодировке весь сайт или его часть отображаются в виде «кряпозяблов», т.е. непонятных символов, делающих текст нечитаемым. Такая ситуация может возникнуть при неверной настройке кодировки веб-сервера или при отсутствии настроек. Рассмотрим возможные варианты и способы устранения проблем

Неправильная кодировка HTML страниц

Создадим тестовый файлик:

Скопируем в него следующий HTML код, в котором отсутствует указание кодировки и посмотрим, какие проблемы могут с ним возникнуть и как их решить:

Как можно видеть, кодировка браузером определена неправильно:

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

Имеется несколько способов исправить эту ситуацию. Начнём с самого простого – явно указать кодировку для веб-страницы. Это делается метатегом, который должен быть расположен внутри тэга head:

Добавим эту строку к нашему тестовому файлику, чтобы получилось так:

Как мы можем убедиться на следующем скриншоте, проблема решена:

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

Если кодировка вашего файла отличается от UTF-8, то вместо неё поставьте windows-1251 или ту, которая соответствует кодировке веб-страницы. Чтобы научиться определять кодировку файлов, посмотрите эту инструкцию.

Это был самый простой способ исправления проблемы с кодировкой – без изменения настроек сервера.

Вернём наш тестовый файл в исходное состояние и продолжим изучение способов указания кодировки.

Если файлы .htaccess включены настройками Apache, то эти файлы можно использовать чтобы указывать кодировку отправляемых веб-сервером страниц. Чтобы включить поддержку файлов .htaccess в конфигурационном файле Apache ( /etc/apache2/apache2.conf ) найдите группу строк

После этого сервер нужно перезапустить.

Файл .htaccess должен быть размещён в той же директории, что и сайт. Мой сайт размещён в корневой директории веб-сервера. Если у вас также, то теперь в папке /var/www/html/ создайте файл .htaccess и добавьте в него директиву AddDefaultCharset после которой укажите желаемую кодировку. Примеры

Можно указать кодировку, которая будет применена только к файлам определённого формата:

Набор файлов может быть любым, например:

Следующий вариант является альтернативным и также позволяет устанавливать кодировку для файлов определённого типа, для него нужно, чтобы был включён mod_headers:

Ещё один вариант, который также можно использовать в файле .htaccess для установки кодировки UTF-8:

Если сайт на PHP, то дополнительно может понадобиться продублировать кодировку с php_value default_charset:

Как установить UTF-8 кодировку в PHP

В PHP скрипте для установки кодировки используется header, например:

Обычно вместе с кодировкой также указывают тип содержимого (в примере вариант для HTML страницы):

Ещё один вариант для RSS ленты:

Помните, что функция header должна быть вызвана перед любым выводом в браузер. В противном случае (если вывод в браузер уже был сделан), то уже были отправлены и заголовки. Очевидно, что в этом случае их уже невозможно поменять. Если в браузер было выведено сообщение об ошибке, то заголовки также уже были отправлены и использование header вызовет ошибку. Для проверки, были ли уже отправлены заголовки, используйте headers_sent.

Описанный способ работает только когда PHP скрипт полностью генерирует содержимое страницы. Статические страницы (такие как html) вы должны сохранять в кодировке utf-8. Большинство веб серверов обратят внимание на кодировку файла и добавят соответствующий заголовок. На самом деле, сохранение PHP файла в кодировке utf-8 приведёт к такому же результату.

Неправильная кодировка результатов из базы данных MySQL

Если ваш сайт состоит из статической части (шаблон) и динамической, которая формируется из данных, получаемых из базы данных, то может возникнуть ситуация, когда часть сайта имеет правильную кодировку, а другая часть сайта имеет неправильную. В этом случае бесполезно менять настройки веб-сервера – поскольку всё равно часть страницы будет иметь неправильную кодировку.

Нужно начать с определения кодировки ваших таблиц. Можно посмотреть в phpMyAdmin:

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

Обратите внимание на столбец «Сравнение», запись «utf8_unicode_ci» означает, что используется кодировка UTF-8.

Можно подключиться к СУБД MySQL и проверить кодировку таблиц без phpMyAdmin. Для этого:

Если вы забыли имя базы данных, то выполните команду:

Предположим, я хочу посмотреть кодировку для таблиц в базе данных information_schema

Если вы забыли имя таблиц, выполните:

Далее выполните команду, в которой имя_таблицы замените на настоящее имя таблицы:

Вы увидите примерно следующее:

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

Смотрите столбец Collation. В моём случае там utf8_general_ci, это, как и utf8_unicode_ci, кодировка UTF-8. Кстати, если вы не знаете в чём разница между кодировками utf8_general_ci, utf8_unicode_ci, utf8mb4_general_ci, utf8mb4_unicode_ci, а также какую кодировку выбрать для базы данных MySQL, то посмотрите эту статью.

Теперь, когда мы узнали кодировку (в моём случае это UTF-8), то при каждом подключении к СУБД MySQL нужно выполнять последовательно запросы:

В PHP это можно сделать примерно так:

Обратите внимание, что UTF8 вам нужно заменить на ту кодировку, которая используется для ваших таблиц.

Изменение кодировки файлов

Если вы решили пойти другим путём и вместо установки новой кодировки изменить кодировку ваших файлов, то посмотрите статью «Как конвертировать файлы в кодировку UTF-8 в Linux». В ней рассказано, как узнать текущую кодировку файлов и как конвертировать файлы в любую кодировку (не только UTF-8).

Как узнать, какую кодировку отправляет сервер

Если вы хотите узнать, какие настройки кодировки имеет веб-сервер (какую кодировку передаёт в заголовках), то воспользуйтесь следующей командой:

В ней вместо URL вставьте реальный адрес проверяемого сайта. Если сайт использует HTTPS, то укажите адрес сайта вместе с протоколом, например

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

Какую кодировку выбрать для веб-сайта

Рекомендуется выбрать кодировку UTF-8. Это более универсальная кодировка, практически, она стала стандартом. У вас не будет проблем с отображением необычных символов и букв из других алфавитов.

Источник

PHP Кодировка страницы

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

Здравствуй уважаемый читатель блога LifeExample, кодировка веб страницы это очень интересный зверь, и за частую хищный для начинающих веб мастеров. Я уверен в том, что все новички сталкиваются с проблемой правильного отображения текста на страницах своего сайта. Ты дорогой читатель, наверное встречал в сети интернета ресурсы, на страницах которых отображался не читаемый текст, а кракозябры.

Кракозябрами в среде программирования веб сайтов принято называть символы не соответствующие тем, которые должны быть выведены на страницу. Например, на созданной вами странице должно отображаться приветствие: «Здравствуй читатель моего блога!», а на деле получаете непонятный набор закорючек «Р—РґСЂР°РІСЃС‚РІСѓР№ читатеРСЊ моего Р±РРѕРіР°!» – вот такие закорючки и есть злые КРАКОЗЯБРЫ.

В данной статье мы разберем эту проблему с ног до головы, чтобы больше не возвращаться к танцам с бубном вокруг нечитаемого текста.

И так, чтобы понять откуда появляются подобного рода иероглифы, нам нужно познакомиться с понятием кодировка страницы. Любой текст на компьютере представляется в виде набора байтов, в каждом из этих байтов определенным кодом — закодирован только один единственный символ. Так вот для того чтобы правильно расшифровать или раскодировать набор байтов и представить его в понятном человеку виде, браузеру нужно провести соответствие с одной из кодовых таблиц. Базовой кодировкой является ASCII кодировка, она содержит в себе коды 128 символов латинского алфавита и спец символов вроде скобок и решеток. Именно из ASCII появились первые русскосимвольные кодировки CP866 и KOI8-R, а из них вышла известная сегодняшним вебмастерам кодировка windows-1251. Не смотря на то, что все эти кодировки призваны для отображения русского текста, они все отличаются друг от друга кодами для одинаковых символов. Если текст писался в кодировке CP866, а браузер пытается раскодировать ее с помощью таблицы кодов windows-1251, то в результате мы получим не читаемые слова. Такое часто происходит при отправке сообщений через почтовый сервер.

Приведенные здесь названия кодировок далеко не все что существуют и используются в разных случаях, их намного больше чем вы думаете. С таким обилием кодовых таблиц образовалась проблема совместимости кодировок, и веб мастерам пришлось вставть на борьду с универсализацией кода, что занимало много времени и нервов. На сегодняшний день изобретена панацея для данной проблемы в виде универсальной кодировки utf-8, со временем она вытесняет используемые ранее кодовые таблицы символов, и сейчас уже не для кого не встает вопрос о том в какой кодировке лучше сохранять данные.

Много было сказано относительно эволюции кодировок, и постановке самой задачи, пришло время поговорить о практических моментах.

Существует четыре места на кухне программирования сайта, которые требуют соблюдения единого стандатра кодирования текста.

Во всех этих составляющих сайта, должна использоваться единая кодировка, какая – решать вам, но я рекомендую utf-8, всетаки она универсальная)

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

Кодировки скриптов (шаг 1)

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

Выбираем именно Convert to UTF-8 without BOM, а не просто Convert to UTF‑8. Приставка without BOM означает то что в первых двух байтах файла будет зашифрована специальная информация о параметре кодировки, в скриптах нам не нужна никакая лишняя информация. В большенстве случаев сохранение с BOM не окажется криминальным, но когданить один из скриптов откажется правильно работать и одной из причин может отазаться именно информация заключенная в первых байтах файла.

Кодировка таблиц MySQL. (шаг 2)

Для того, чтобы узнать какие кодировки используются в ваше MySQL базе, воспользуемся интерфейсом phpMyAdmin. В разделе SQL напишем запрос:

Выглядеть это должно вот так:

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

Жмем ОК и получаем информацию о кодировках таблицы

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

Значения на против character_set_client и character_set_results должны совпадать, так как эти параметры отвечают за кодировку, в которой данные поступают в базу и за кодировку в которой данные берутся из базы.

Если они у вас различаются, то нужно в PHP коде в ручную установить нужную кодировку. Делается это вот такой строчкой:

После этого три переменные character_set_client, character_set_connection и character_set_results примут значение utf8.
Подробнее о том как с помощью PHP работать с базой данных можно прочесть в статье PHP работа с базой данных (Часть 1-3).

Кодировка самой HTML страницы. (Шаг 3)

Теперь данные взятые с базы и данные обрабатываемые в php скрипте, будут совпадать по кодировке, и выводиться в понятном для человека тексте. Но это еще не все, нужно указать кодировку в разделе для мета тегов:

Либо в cкрипте настроек php командой:

Если кодировка HTML будет задана сразу двумя способами, то приоритетным будет задание кодировки из php скрипта.
Также можно глобально задать правило кодировки HTML в файле .htaccess добавив в него строку:

Локаль используемая браузером пользователя. (Шаг 4)

Еще одна важная деталь при корректном отображении текста это установка локали:

При установки такой локали, пердставители других стран использующие другую кодовую страницу в своей операционной системе, будут видеть русский текст.

Мы рассмотрели основные моменты возникновения противоречий в кодировках веб страницы, подведем итоги. Для того чтобы ваш рускоязычный сайт был всегда доступен для чтения, необходимо прописать в PHP скрипте настроек такие строки:

Если у тебя дорогой читатель остались вопросы по данной статье о PHP кодировке страниц, то смело задавай их в комментариях.

Читайте также похожие статьи:

php header content type text html charset utf 8. Смотреть фото php header content type text html charset utf 8. Смотреть картинку php header content type text html charset utf 8. Картинка про php header content type text html charset utf 8. Фото php header content type text html charset utf 8

Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.

Источник

Как грамотно отправлять почту из скриптов (в частности — на PHP)

Первая часть текста взята из инструкции хостинг-провайдера Netangels. Вторая — авторская.

Отправка почты из скриптов на PHP — вещь, которая очень часто встречается в веб-приложениях. К сожалению, как показывает практика, большинство разработчиков используют эту функцию неправильно, допуская в своих скриптах одни и те же ошибки. В результате оказывается, что письмо получателю пришло в неверной кодировке, просто не дошло, или дошло, но отображается совсем не так, как этого хотел автор.

Для того, чтобы быть уверенным, что ваше сообщение отправляется действительно верно, необходимо иметь по меньшей мере базовые представления о формате почтового сообщения. Формат почтового сообщения описан в нескольких стандартизирующих документах, основными из которых являются RFC 822 (описывает формат передачи простого текста на английском языке) и RFC 2045 и далее (описывает расширения этого формата для передачи произвольных данных).

Формат почтового сообщения

Ниже приведен самый простой пример текстового сообщения, составленного в соответствии с приведенными выше стандартами и готового к отправке.

To: =?windows-1251?b?0J/QvtC70YPRh9Cw0YLQtdC70Yw/PQ==?=
Subject: =?windows-1251?b?0Y3RgtC+INGC0LXQvNCwINGB0L7QvtCx0YnQtdC90LjRjz89?=
Content-Type: text/plain; charset=«windows-1251»
Content-Transfer-Encoding: 8bit

Это почтовое сообщение на русском языке
Содержит несколько строк

Именно в таком формате клиент для отправки почты (MS Outlook или Mozilla Thunderbird) подготавливает сообщение, а затем отправляет его получателю (кстати, большинство почтовых клиентов позволяют просмотреть исходный код сообщения, в Mozilla Thunderbird, например, для этого служит комбинация клавиш Ctrl+U). Задача нашего скрипта языке PHP — добиться точно такого же формата письма.

Как видно из приведенного выше примера, электронное письмо содержит две части: в одной (верхней) размещаются заголовки, а в другой (нижней) собствено текст письма. Отделены эти части друг от друга пустой строкой. Заголовки состоят из строк, в которых содержится тема письма (Subject), имя и адрес отправителя (From), получателя (To) и другая информация. В самом простом случае каждая строка содержит пару «ИмяЗаголовка: ЗначениеЗаголовка». Особенно необходимо подчеркнуть, что, согласно стандартам, в заголовках ни при каких обстоятельствах не должны содержаться символы, не присутствующие в ASCII таблице — латинские буквы, цифры, знаки пунктуации и псевдографики.

Грамотное использование русских символов в заголовках почтового сообщения

=? кодировка? способ кодирования? закодированный текст?=

Кодировка может быть любой из списка «windows-1251», «koi8-r», «utf-8» и т.д. Во всех случаях, как правило, кодировка сообщения будет совпадать с кодировкой в которой работает сайт. То есть в большинстве случаев это будет «windows-1251», реже — «utf-8».

Способ кодирования указывает на то, каким именно образом русские символы будут преобразованы в безопасный набор. Способа определяется два: так называемый «Q-encoding» (обозначается одной буквой «Q») и «Base64» (обозначается одной буквой «B»).

К сожалению, штатной функции, которая бы могла бы обычную строку преобразовать в Q-encoded текст, в PHP нет, зато есть функция, которая умеет выполнять аналогичное преобразование в Base64. Итак, PHP код правильного создания заголовка темы почтового сообщения может выглядеть следующим образом:

Content-type: multipart/.

С этим заголовком знаком любой разработчик, которому доводилось решать проблемы отправки писем с вложениями или HTML письмами. И зачастую письма, сформированные без использования библиотек вроде PEAR::Mail_mime отображаются не очень корректно. Практика показывает, что если при формировании письма жестко придерживаться стандарта, которы задается в RFC (в частности — RFC 2046) — подавляющее большинство клиентских программ (включая таких любителей придерживаться стандартов, как Mozilla Thunderbird) отображает письмо корректно. Далее мы будем исходить из того, что читатель этого документа представляет себе основной синтаксис команд и понимает, что таке boundary и почему необходимо указывать Content-type для каждой из частей письма. Постараемся отметить основные ошибки.

Ошибка первая — неверный subtype

Ошибка вторая — неверный порядок частей

Ошибка третья — выбор только одного субтипа

Зачастую разработчик, формирующий из программы письмо забывает, что любая из частей письма может так же иметь Content-type: multipart, а значит можно выстроить некоторое подобие древовидной структуры, гарантирующей, что каждая из частей письма займет правильное место. Вот как примерно может выглядеть структура письма, имеющего текстовую и HTML версию (HTML с картинками), а так же приложенный документ MS Word:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *