Header content type content text html charset utf 8

Setting the HTTP charset parameter

When a server sends a document to a user agent (eg. a browser) it also sends information in the Content-Type field of the accompanying HTTP header about what type of data format this is. This information is expressed using a MIME type label. This article provides a starting point for those needing to set the encoding information in the HTTP header.

The charset parameter

Documents transmitted with HTTP that are of type text, such as text/html, text/plain, etc., can send a charset parameter in the HTTP header to specify the character encoding of the document.

It is very important to always label Web documents explicitly. HTTP 1.1 says that the default charset is ISO-8859-1. But there are too many unlabeled documents in other encodings, so browsers use the reader’s preferred encoding when there is no explicit charset parameter.

The line in the HTTP header typically looks like this:

In theory, any character encoding that has been registered with IANA can be used, but there is no browser that understands all of them. The more widely a character encoding is used, the better the chance that a browser will understand it. A Unicode encoding such as UTF-8 is a good choice for a number of reasons.

Server setup

How to make the server send out appropriate charset information depends on the server. You will need the appropriate administrative rights to be able to change server settings.

Apache. This can be done via the AddCharset (Apache 1.3.10 and later) or AddType directives, for directories or individual resources (files). With AddDefaultCharset (Apache 1.3.12 and later), it is possible to set the default charset for a whole server. For more information, see the article on Setting ‘charset’ information in .htaccess.

Jigsaw. Use an indexer in JigAdmin to associate extensions with charsets, or set the charset directly on a resource.

IIS 5 and 6. In Internet Services Manager, right-click «Default Web Site» (or the site you want to configure) and go to «Properties» => «HTTP Headers» => «File Types. » => «New Type. «. Put in the extension you want to map, separately for each extension; IIS users will probably want to map .htm, .html. Then, for Content type, add » text/html;charset=utf-8 » (without the quotes; substitute your desired charset for utf-8; do not leave any spaces anywhere because IIS ignores all text after spaces). For IIS 4, you may have to use «HTTP Headers» => «Creating a Custom HTTP Header» if the above does not work.

Scripting the header

The appropriate header can also be set in server side scripting languages. For example:

Читайте также:  Python install main packages

Perl. Output the correct header before any part of the actual page. After the last header, use a double linebreak, e.g.:
print «Content-Type: text/html; charset=utf-8\n\n»;

Python. Use the same solution as for Perl (except that you don’t need a semicolon at the end).

PHP. Use the header() function before generating any content, e.g.:
header(‘Content-type: text/html; charset=utf-8’);

Java Servlets. Use the setContentType method on the ServletResponse before obtaining any object (Stream or Writer) used for output, e.g.:
resource.setContentType («text/html;charset=utf-8»);
If you use a Writer, the Servlet automatically takes care of the conversion from Java Strings to the encoding selected.

JSP. Use the page directive e.g.:

Output from out.println() or the expression elements ( ) is automatically converted to the encoding selected. Also, the page itself is interpreted as being in this encoding.

ASP and ASP.Net. ContentType and charset are set independently, and are methods on the response object. To set the charset, use e.g.:

In ASP.Net, setting Response.ContentEncoding will take care both of the charset parameter in the HTTP Content-Type as well as of the actual encoding of the document sent out (which of course have to be the same). The default can be set in the globalization element in Web.config (or Machine.config , which is originally set to UTF-8).

Further reading

  • Setting charset information in .htaccess
  • Checking HTTP Headers
  • Tutorial, Handling character encodings in HTML and CSS
  • Related links, Setting up a server
    • Characters
    • Setting the HTTP charset parameter
    • Characters
    • Characters

    Источник

    Функция header

    HTTP заголовки это специальная информация, которая присоединяется к документу, то есть, к тому файлу, который запрашивается браузером с сервера. Когда мы вбиваем в адресную строку какой-нибудь адрес то, соответственно, запрашиваем на сервере по этому адресу какой-нибудь документ. Эта информация(документ) видна у нас на экране. Но кроме видимой части есть еще и невидимая — те самые HTTP заголовки, которые отправляются сервером браузеру и они нужны для того, чтобы браузер корректно отобразил страницу. То есть, заголовки подсказывают браузеру как показать страницу или как отдать страницу.

    Для браузера firefox: кнопка F12 -> сеть -> кликнуть «статус» и обновить страницу :

    header1

    Среди прочего в заголовках отправляется информация о кодировке страницы, как давно модифицировалась страница, информация о том, что это за страница (html-страница, обычный текстовый документ; или, вместо того чтобы показать страницу, отдать ее на скачивание)

    Установление кодировки

    Один, из наиболее часто используемых вариантов функции header , это использование функции для установления кодировки.

    В файле index.php в папке с нашим уроком запишем: привет, мир! и посмотрим в браузере, что получили. Мы можем получить крабозябры . Это происходит по тому, что браузер будет открывать документ в той кодировке, которую сервер отправил в заголовках по умолчанию. Если кодировка нашего документа не совпадает с кодировкой сервера — получим крабозябры.

    Кодировка для всех частей нашего приложения должна быть единой .

    Рекомендуется всегда использовать кодировку utf-8 — как универсальную кодировку.

    Использование метатэга — не всегда помогает, потому что сервер может отправлять по умолчанию свою кодировку в заголовках и в этом случае она будет иметь больший приоритет, чем метатэг charset .

    В этом случае мы должны переопределить кодировку сервера с помощью функции header . (php.net)

    Функция header позволяет указать нужную нам кодировку.

    header ( ‘Content-Type: text/html; charset=utf-8’ );
    ?>

    где:
    text/html — тип документа;
    charset=utf-8 — нужная нам кодировка.

    Если посмотрим заголовки в «разработка/инструменты разработчика/сеть» (в firefox ), то увидим, что они дополнились кодировкой charset=»UTF-8″ , то есть, мы указали браузеру (отправили заголовки), что нужно использовать именно данную кодировку. При этом она имеет приоритет над метатэгом charset .

    header2

    Еще один способ установления кодировки по умолчанию — это использовать специальный файл .htaccess . Данный файл является файлом настройки сервера Apache .

    Создадим даннный файл в нашей папке.

    Установим кодировку для сервера по умолчанию с помощью специальной директивы AddDefaultCharset .

    Данная директива заставляет сервер отправлять в заголовках кодировку, указанную в качестве значения данной дериктивы.

    Организация редиректа

    Функцию header часто используют для редиректа .

    Создадим новый файл — inc.php и выведем в нем строку: «привет из подключаемого файла» .

    echo ‘Привет из подключаемого файла’ ;
    ?>

    В индексном файле используем функцию header для редиректа. Его можно сделать двумя командами:
    — командой ‘ Location ‘
    — командой ‘ refresh ‘

    header ( ‘Content-Type: text/html; charset=utf-8’ );
    header ( ‘Location: inc.php’ ); // где inc.php — относительный путь к файлу
    ?>

    При работе с редиректом нужно помнить что редирект происходит не сразу. Когда отрабатывает
    данная команда ( header(‘Location: inc.php’); ), выполнение файла продолжается дальше.
    Чтобы сделать безусловный редирект и не выполнять дальнейший код нужно воспользоватся
    одной из двух команд — функция die (пер.- умри) и функция exit (пер.- выйти).
    Эти команды почти всегда рекомендуется использовать после редиректа.

    Чтобы убедиться, что у нас код после команды редиректа выполняется, используем редирект
    с задержкой: header(‘refresh: 5, url’) , где
    5 — время задержки в секундах,
    url=inc.php — адрес, на который должен быть перенаправлен пользователь (если внешний адрес,
    то используем — http, если внутренний, то используем — относительный путь к файлу ).
    Запускаем файл index.php:

    header ( ‘Content-Type: text/html; charset=utf-8’ );

    header( ‘Location: inc.php’ );
    // — где inc.php — относительный путь к файлу

    header ( ‘refresh: 5, url=inc.php’ );
    // — адрес, на который должен быть перенаправлен пользователь

    — после загрузки документа весь код у нас выполнился — выводится: привет мир!
    После пятисекундной задержки нас перенаправляет на другой файл ( inc.php ) — выводится: привет из подключаемого файла .
    Чтобы код не выполнялся используем любую из функций: либо exit , либо die .

    header ( ‘Content-Type: text/html; charset=utf-8’ );
    header( ‘Location: inc.php’ );
    // — где inc.php — относительный путь к файлу

    header ( ‘refresh: 5, url=inc.php’ );
    exit ;
    // die;
    ?>

    — после загрузки документа код у нас не выполняется — видим пустую страницу.
    После пятисекундной задержки перенаправляемся на другой файл — выводится: привет из подключаемого файла .

    Проблемы вывода

    Функция header отправляет заголовки в браузер. Они помогают коректно отобразить страницу. Эти заголовки должны бать отправленны раньше перед самим контентом страницы, поскольку браузер должен проанализировать заголовки и, в соответствии с ними, показать нашу страницу. Поэтому заголовки должны быть всегда отправленны до вывода , при этом заголовки могут отправлятся только один раз .
    Если мы инициализируем вывод в браузер, то заголовки автоматически будут отправленны. Это значит, что если перед функцией header есть какой-то вывод в браузер, то она просто не отработает.

    1. В этом легко убедиться, если в индексном файле поставим какой нибудь вывод, например, перенос строки перед функцией header :

    — не удается изменить информацию заголовка — заголовки уже отправленны .

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

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

    Например, мы подключаем файл inc.php, и в нем есть какая-то переменная — $test = ‘TEST’ .

    В индексном файле мы хотим использовать данную переменную: $test ?> .

    Источник

Оцените статью