Jump to content
  • 0

FAQ по кодировкам.


Игорь Ермаков
 Share

Question

Часто возникают типичные вопросы по кодировкам, типа: "перенёс страницу на хостинг а там одни квадратики". Ответы на эти вопросы не менее типичны. Прежде чем задать вопрос относительно кодировок обязательно прочтите этот FAQ.

В: На странице не вместо кириллицы отображаются какие-то закорючки и кубики, что делать? >(

О: Скорее всего вы либо не задали странице кодировку в meta-тегах, либо она не совпадает с кодировкой документа.

1. Сохраните файл в кодировке UTF-8 (без BOM).

2. В заголовках (<head>) страницы укажите эту же кодировку:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Более подробная информация по использованию тега meta: http://htmlbook.ru/html/meta.html

Кодировка, которую вы указываете в HTML-разметке документа, должна совпадать с кодировкой самого документа.

В: При отображении страницы в браузере, в самом начале кода появляется символ: п»ї

О: Сохраните документ с кодировкой UTF-8 (без BOM).

О отличиях кодировки UTF-8 от кодировки UTF-8 (без BOM), а именно о том почему появляется данный символ, вы можете читать по этой ссылке.

В: Всё нормально сохранил, указал кодировку странице, но при загрузке на веб-сервер на странице всё равно одни квадратики.

О: Значит ваш веб-сервер настроен на отображение другой кодировки, эта проблема решается двумя способами:

1. Передайте кодировку файла, при помощи php-функции header();

Выглядит это так, в приведённом примере мы передаём кодировку UTF-8:

<?php header('Content-Type: text/html; charset=utf-8'); ?>

2. Можно настроить ваш веб-сервер так, чтобы он адекватно отображал нужную кодировку, для этого:

- Идём сюда: usr\local\apache\conf\httpd.conf

- Открываем файл любым редактором.

- При помощи поиска (Ctrl+F) ищем строчку: "AddDefaultCharset здесь как правило указана какая-то кодировка"

- Меняем кодиовку на свою, к примеру на UTF-8 выглядеть будет так: "AddDefaultCharset utf-8"

- Делаем рестарт веб-сервера.

3. Поскольку на виртуальных хостингах нет доступа к confog-файлам апача, то кладём в корень сайта файл .htaccess и в нем пишем: "AddDefaultCharset utf-8"

4. При работе в одной связке Nginx+Apache, добавление директивы AddDefaultCharset ничего не дает, поскольку всю статику отдает Nginx и он зачастую управляет кодировкой. В таких случаях где-то в управлении хостингом должна быть настройка кодировки. Лучше всего об этом спросить у техсаппорта.

Внимание: только для веб-сервера типа Apach.

Благодарности при создании FAQ:

- Justnewone и Veselof за учатие в этой теме: http://forum.htmlbook.ru/index.php?showtopic=16883&hl=

- xPoint за пункты 3 и 4 в последнем вопросе.

Кому есть, что добавить/исправить милости просим.

Edited by Игорь Ермаков
Link to comment
Share on other sites

Recommended Posts

  • 0

Ответьте на простой вопрос: в какой кодировке стоит всегда создавать html-документы, так чтобы они правильно отображались на большинстве хостингов? В UTF-8 без BOM?

И по поводу UTF-8 без BOM. Всегда-ли стоит перегонять файл именно в UTF-8 без этой сигнатуры? Просто, если в Notepad++ создать такой файл и сохранить без кириллических символов, то потом он все равно откроется как файл в ANSI-кодировке.

Edited by Queebro
Link to comment
Share on other sites

  • 0

да просто utf-8 — стандарт де-факто.

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

Или вот на днях случай был: делаю вёрстку — всё в порядке. Отдаю заказчику, его программист уже интегрирует с cms.

И появляется в середине страницы непонятный отступ. Претензии ко мне.

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

Оказывается, программист сохранил файл с BOM, и этот файл подключал в середине страницы.

Link to comment
Share on other sites

  • 0
Просто, если в Notepad++ создать такой файл и сохранить без кириллических символов, то потом он все равно откроется как файл в ANSI-кодировке.

А он и есть файл в ANSI-кодировке (даже вообще в ASCII). По построению самого UTF-8 ;)

Link to comment
Share on other sites

  • 0

А он и есть файл в ANSI-кодировке (даже вообще в ASCII).

Разве ANSI и ASCII не одно и тоже? Хорошо, из статьи я понял, что "Текст, состоящий только из символов с номером меньше 128, при записи в UTF-8 превращается в обычный текст ASCII". Но я не понимаю, как можно писать кириллические символы в ANSI-файл, если кодировка ANSI состоит только из латинских символов?

Вот таблица символов ANSI:

580ec444ca02.gif

Я окончательно запутался, с этими кодировками. ;)

Edited by Queebro
Link to comment
Share on other sites

  • 0
Разве ANSI и ASCII не одно и тоже?

Не совсем. Первые 127 байт/символов совпадают (латиница, цифры, базовая пунктуация и т.п.), вторые 128 у всех по-разному (причем ANSI существует в разных вариантах, для разных наборов символов). И в UTF-8 эти же первые 127 основных символов тоже обозначаются теми же самыми байтами, а все остальные символы - уже несколькими байтами на символ.

Link to comment
Share on other sites

  • 0

Что лучше виндовс-1251 или ютф-8?

Мне нужен только русский и ангийский текст на сайте и впринципе подходит виндовс-1251, но я слышал что ютф-8 это будущее чегото... и вёрстка сайта с такой кодировкой считается более правильно и проффесионально.

Link to comment
Share on other sites

  • 0

Что лучше виндовс-1251 или ютф-8?

Мне нужен только русский и ангийский текст на сайте и впринципе подходит виндовс-1251, но я слышал что ютф-8 это будущее чегото... и вёрстка сайта с такой кодировкой считается более правильно и проффесионально.

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

Расово верная кодировка — utf8.

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

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

Вот и считайте, вероятность чего у вас выше: того, что сервер ляжет из-за лишних нескольких байт или того, что встретятся особые символы?

Моё мнение — пусть будет утф8. Ситуацию, когда надо будет написать цитату из китайского, турецкого или арабского, представляю куда легче, чем непродуманную высоконагруженную систему.

Но это всё ерунда. На практике гораздо важнее, чтобы непосредственно кодировка текста, отдавамый сервером заголовок content-type и мета-тэг соответствовали друг другу, о какой бы кодировке они ни говорили.

Link to comment
Share on other sites

  • 0

Что лучше виндовс-1251 или ютф-8?

Мне нужен только русский и ангийский текст на сайте и впринципе подходит виндовс-1251, но я слышал что ютф-8 это будущее чегото... и вёрстка сайта с такой кодировкой считается более правильно и проффесионально.

ютф однозначно. с ней вы не зависите от платформы/локали и прочего. Поддерживается всем и вся, потом любые символы любых языков можно использовать - а значит расширяемость. виндовс - само название говорит за себя :)

Да, и самое главное: W3org велел utf-8!

Вот ничегошная статейка за

http://webmastak.com/article.aspx?id=300

  • Like 2
Link to comment
Share on other sites

  • 0

Не знаю не знаю...

В колледже учителю понтанулся))) и сказал что утф-8 нужно ставить, он лучше и...

Но он сказал поставь и посмотри как будет выглядить, ну я поставил и у меня в ИЕ были квадратики вместо норм текста :)

ЧЗХ?

Link to comment
Share on other sites

  • 0

Двойку учителю.

Сервер какие заголовки шлёт?

Как в IE смотреть — не знаю, а например в Firefox можно под это дело использовать HttpFox.

ну и конечно же понтоваться лучше будучи уверенным в своём знании предмета :)

  • Like 1
Link to comment
Share on other sites

  • 0

Нее, я опять с воопросом)))

Когда делаешь сайт прописываешь кодировку в меттатег, да?

Но есть ещё такая штука, можно задать кодировку в любом текстовом редакторе(нотепад допустим), а зачем?

И какую ставить?

Что будет если в метатег поставишь одну кодировку, а страницу сохранишь в другой кодировке? =)

Link to comment
Share on other sites

  • 0

В редакторе задаёшь кодировку файла (фактическую), в <meta> указываешь браузеру, какую кодировку файлу ты задал.

Ставь ту, какую удобнее.

Что будет, можешь посмотреть view->Character encoding->Cyrillic (ISO-8859-5). Это для примера, можешь выбрать любую другую кодировку и тоже посмотреть.

  • Like 1
Link to comment
Share on other sites

  • 0

А это как? Можно поподробней? :facepalmxd:

Всмысле какую? Такую какую и в меттатег?

Та в которой будет сохранен сам файл.

Мета-тег нужен браузеру, чтобы он знал в какой кодировке сохранен файл.

  • Like 1
Link to comment
Share on other sites

  • 0

А когда в редакторе задаёшь кодировку онна на чтото влияет? И вообще для чего она там?

когда-то люди подумали что смогут достигуть величия Бога, и стали строить Вавилонскую башню. но Бог не фраер и дал им по рогам, башня поломалась, а мы получили в наказание свыше 9000 различнх локалей. и эти локали все бли разные и вызывали на мониторах вавилонских демонов - крякозябров. но потом 2 сентября 1992 года Кен Томпсон и Роб Пайк покурили годной травы и вавилон пал. и появился utf-8!!!1

теперь можно везде задавать utf-8 и не загружать мозг вопросами для чего и как, в любой стране мира твой документ будет отображён как надо. Bayanruby, она там что бы сбивать вас с пути истинного. юзайте ютф всегда, юзайте ютф везде. и кодировка не будет ни на что влиять, а будет работать как надо.

  • Like 3
Link to comment
Share on other sites

  • 0

Я так понимая что любой человек, хоть из китая, зайдя на мой сайт увидит обычный русский текст, а не крякикозябли, да?

Это при УТФ-8.

абсолютно верно.

  • Like 1
Link to comment
Share on other sites

  • 0

таблицу для верности создал по новой, в поле "Сравнение" выбрал utf8_general_ci

в шапку рнр-страницы вставил Вашу строку:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

то же самое, вот ссылка на страницу: http://bcomp.com.ua/in2.php

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy