HTML кодировка. В какую кодировку сохранять web-страницу
В этой статье я постараюсь поставить все точки над «и» (а так же над «i») в вопросе выбора кодировки для создаваемой HTML-страницы.

Когда я только начинал заниматься сайтостроительством у меня постоянно возникали проблемы из-за этих кодировок. Сохранишь HTML-страницу, выгрузишь на сервер, открываешь, бах, а там кракозябры. Ну вот и здравствуйте, приехали.
Или в среде отладки (например, локальная среда разработки «Денвер») все нормально, а с хостинга опять они, кракозябры проклятые, нагло на меня смотрят.
С движками сколько мучений было. Вдруг, непонятно почему, родные русские буквы превращаются в …
Сейчас мы с этим делом подробно разберемся и вы будете четко знать в какую кодировку сохранять HTML-страницу и посредством каких инструментов.
Для укрепления нашего взаимопонимания определимся с понятием кодировка. Так вот, кодировка — это таблица соответствия машинных кодов и символов алфавита. Есть какая-то последовательность машинных символов, которую умный компьютер, в соответствии с выбранной кодовой таблицей, заменяет на понятные нам буквы.
В 90-е годы прошлого века (древность какая, а я как сейчас помню календарь 1991 года на стене) существовало 4-е кодировки для PC и еще одна, своя собственная, для Мака. Ирония судьбы заключается в том, что во всех этих кодировках символы латиницы ставились в соответствие машинным кодам по одному и тому же алгоритму, а вот по поводу кирилицы каждая из кодировок имела свое собственное мнение.
Вся эта путаница и привела к появлению кракозябров. Например, если слово «Вопрос», набранное в кодировке windows-1251, отобразить кодировкой KOI8-R, получится слово «бНОПНЯ».
Слава Богу, 90-е годы уже далеко позади и из пяти бредокодировок осталось всего 2-е нормальных. Но этого вполне достаточно, чтобы начинающий веб-мастер заблудился в двух соснах. Ничего, не переживайте, сейчас я вас выведу из этого леса!
На данный момент выбор для кодировки HTML-документа стоит между windows-1251 и utf-8. А теперь внимание: utf-8 гораздо богаче, мощнее и за ней будущее. Так что наши HTML-файлы мы будем сохранять именно в utf-8.
Обосную свои слова
. UTF-8 содержит в своей таблице соответствия такие знаки, как → ←↓↑. А в windws-1251 вместо этих символов вот что: > <v^. А еще в utf-8 есть знак «евро»; а еще utf-8 позволяет в одном HTML-файле совмещать кучу разнообразных специфических символов, используемых в таких языках как грузинский, иврит, китайский, японский; а еще utf-8 в кодировках HTML — это правило хорошего тона.
Надеюсь я вас убедил и вы будете использовать Юникод (кстати «utf-8» и «Юникод» — это синонимы или, если быть более точным, utf-8 — это одна из кодировок семейства Юникод, которая снискала популярность в среде веб-разработчиков).
Теперь пристально посмотрим на инструменты перекодирования файлов, которые я рекомендую вам использовать, уважаемый читатель.
Инструменты для работы с кодировками HTML файлов
Собственно, их всего три:
- PSPad. Бесплатный текстовый редактор, мой любимый.
- Notepad++. Еще один хороший текстовый редактор и тоже бесплатный.
- Dreamweaver. Ну с Dreamweaver-ом вы с вами знакомы из моих видеоуроков по верстке сайта.
Загружаем какой-то HTML-файл в PSPad. И как же нам понять, что за кодировка у загруженного подопытного? Очень просто в строке состояния (внизу) все четко написано.

Кодировка открытого HTML-файла windows-1251

А у этого файла HTML кодировка utf-8
А теперь, создавая новый HTML-документ, позаботимся о его кодировке.
Идем в меню моего любимого PSPad-а. Нас интересует пункт Формат. В нем-то мы и поставим галку напротив кодировки utf-8.

Кодировка будущего HTML-файла будет utf-8

А так кодировка будующего файла — windows-1251
Теперь о том как изменить кодировку файла HTML. Да оказывается очень просто:

Пример перекодирования файла из кодировки windows-1251 в utf-8
Нужно кликнуть по требуемой кодировке в пункте меню Формат и кодировка сменится. После этого сохраняйте файл, он перекодирован, дело сделано.
Что касается Notepad++ все очень похоже на вышеописанную ситуацию. Только для работы с кодировками нужно использовать пункт меню Кодировки.
Вся разница заключается в том, что в случае Notepad++ появляются, специально разработанные для преобразования кодировок, пункты меню Преобразовать... (лишние на мой взгляд, в PSPad все проще и поэтому я им пользуюсь). Соответственно, именно по ним и нужно кликать при желании поменять кодировки у нашего HTML-файла.
Кроме всего прочего, при сохранении в utf-8 у нас есть выбор: без BOM или с BOM. Нам, как веб-мастерам, нужно использовать кодировку UTF-8 (без BOM).
Вот что нам ответит Википедия на вопрос «что такое BOM»
Для определения формата представления Юникода в текстовом файле используется приём, по которому в начале текста записывается символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. Byte Order Mark, BOM). Этот способ позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также он иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов.
Если прочитать приведенный текст 10 раз, почесать затылок, то становится понятно: для utf-8 BOM нам НЕ нужен. Кроме того, если сохранить файл с php-скриптом в кодировку utf-8 с BOM, то он не будет работать, потому что обработчик не поймет, что это за ерунда такая написана в начале файла-скрипта (я имею ввиду тот самый неразрывный пробел с нулевой шириной).
Так-так, осталось пристально взглянуть на Dreamweaver.
Создавая новый файл, обращайте внимание на то, в какой кодировке он будет создан. Для этого в окне создания нового документа File → New (Ctrl+N) воспользуйтесь кнопкой Preferences…

И посмотрите, что задано в качестве кодировки по умолчанию:

Кодировка создаваемого HTML-файла по умолчанию в Dreamweaver
Перекодировать открытый HTML-файл в Dreamweaver можно в диалоге Page Properties, который запускается из меню Modify → Page Properties (Ctrl + J).

Выбирайте требуемую кодировку, нажимайте ОК и все, задача по перекодированию выполнена (а вот BOM все так же ненужен, не ставьте галку).
Определение кодировки браузерами
Итак, наш HTML-файл сохранен в выбранную нами кодировку. Теперь давайте разберемся с вопросом: каким образом браузер узнает о применяемой в данном HTML-файле кодировке?
Здесь есть три варианта:
1. Мы сами сообщаем браузеру о том, какая кодировка установлена для данного HTML файла. Делается это посредством META-тега
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
В приведенном примере браузеру дается указание, что загруженный HTML-файл сохранен в кодировке utf-8.
Если HTML-файл сохранен в кодировку windows-1251, то:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
Кстати, при перекодировке файлов не забывайте изменять директивы в META-теге на актуальные. Dreamweaver, при изменении кодировки, делает это автоматически, а в других текстовых редакторах вам нужно самим ставить в соответствие примененную кодировку и директиву META-тега.
Полный HTML выглядит следующим образом (привожу его для понимания вопроса «в каком месте указывается META-тег с директивой кодировки» внимание на 4-ю строку):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Untitled Document</title> </head> <body> Ну и т.д.
2. При помощи файла .htaccess. Иногда сервер насильно передает заголовки для загружаемых HTML-файлов и сообщает браузеру кодировку по умолчанию. В этом случае браузер не обращает внимания на директивы в META-теге, а отображает HTML-файл в той кодировки, которую сообщил сервер. Чтобы файл загружалсяв той кодировке, которая нужна вам (часто хостинг насильно указывает кодировку windows-1251), в корне хостинг-директории создается файл с именем «.htaccess».
Файл этот предназначен для дополнительной конфигурации сервера. Действие .htaccess-директив распространяется на все файлы и подкаталоги, которые находятся в том каталоге, куда вы сохранили файл .htaccess.
Создать этот файл можно, например, в Total Commander-е, нажав горячее сочетание клавиш Shift+F4 и указав имя создаваемому файлу .htaccess. Далее в текстовом редакторе указываются директивы дополнительных настроек кодировки по умолчанию.
Для HTML-файлов в кодировке utf-8 в .htaccess нужно написать одну строку:
AddDefaultCharset UTF-8
Для HTML-файлов в кодировке Windows-1251:
AddDefaultCharset Windows-1251
Если ваш хостинг хитро-мудрый и не обращает внимания на эти директивы, то можно попробовать:
charsetdisable on
AddDefaultCharset Off
Если и это не дало результата, то просто спросите у своего хостера, чего вам делать, чтобы отключить кодировку по умолчанию
. Все это зависит от конкретных настроек сервера у хостинг-провайдера.
3. PHP-инструкция, указывающая кодировку по умолчанию. В файле, который нужно отобразить в желаемой кодировке, не смотря на настройки сервера хостинг-провайдера, в самом начале указывается директива с php-кодом:
<?php header('Content-type: text/html; charset=utf-8')?>
Этот php-код отправит заголовок сервера с указанием кодировки по умолчанию для браузера. В приведенном примере, для отображения страницы, будет применяться кодировка utf-8.
Против такого лома, обычно, приемов в настройках сервера хостинг-провайдера не остается.
Хочу заметить, что для обработки php-инструкций сервером, html-файл должен иметь расширение .php (например index.php).
Есть еще вопросы по кодировкам? Пишите в комментарии. Нужно решить эти проблемы раз и на всегда
С уважением, Андрей Морковин.
Похожие материалы:
Отзывов: 252 на «HTML кодировка. В какую кодировку сохранять web-страницу»
-
Установка Apache - Настройки Apache - Установка PHP - Настройка PHP - Установка MySQL - Настройка MySQL — 14.10.2009 в 15:15
-
Бонусный видеоурок по настройке сервера + ссылка на быстрое скачивание курса — 31.05.2010 в 02:31
-
Проблемы с кодировкой в Html | Компьютеры программирование администрирование — 04.08.2010 в 16:36
-
Верстка страницы - Kohana - Видеоурок — 25.02.2011 в 23:49
-
NetBeans - редактор для веб-мастера — 23.03.2011 в 01:50
-
PHP, кодировки, кракозябры | Хисяметдинов Дамир — 24.07.2011 в 15:07
-
PHP, кодировки, кракозябры | Хисяметдинов Дамир | Балаково, создание сайтов, 927-621-3606 — 04.11.2011 в 11:45














, 06.10.2009 в 17:40
Если бы я после того, как увидел такой подробный и полезный труд для новичков и не только, на 9500 тыс. символов с пробелами не оставил комментарий — то это было бы преступлением!!! Андрей, статья просто супер!
А про BOM вообще ничего не понятно, нужно просто запомнить и забыть
, 07.10.2009 в 10:35
Я рад, что статья Вам понравилась и оказалась полезной.
Да, про BOM веб-мастеру нужно знать одно — это враг для HTML и PHP файлов. И нужно сохранять без BOM.
, 13.12.2009 в 17:24
Угу, не раз вылазили глюки из-за BOM.
, 08.10.2009 в 15:32
Ой, спасибо!!! Ну, прямо полнейший ответ на все мои вопросы!!!
Я эту страничку даже сохраню на ПК (после того как комментарий отправлю), уж больно тут много полезностей изложено!!!
«Вопрос», набранное в кодировке windows-1251, отобразить кодировкой KOI8-R, получится слово «бНОПНЯ» — а мне показалось «КОНОПЛЯ» О_о
«Вся разница заключается в том, что в случае Notepad++ появляются, специально разработанные для преобразования кодировок, пункты меню Преобразовать… лишние на мой взгляд» — дело в том, что если перекодировать без «Преобразовать«, а просто поставить галочку, то могут появиться кракозябры!..
«Создать этот файл можно, например, в Total Commander-е, нажав горячее сочетание клавиш Shift+F4″ — ну вот еще что-то новое и приятное узнал об тотале
, 08.10.2009 в 21:23
Почему-то в PSPad-e обошлись без этих дополнительных пунктов и никаких кракозябров.
Спасибо Вам за спасибо
, 08.10.2009 в 22:54
…спасибо-спасибо, а юзерпик так у меня и не появился
)))))))))))))))))
, 09.10.2009 в 08:44
А я здесь уже не причем. Проверьте свои настройки на http://ru.gravatar.com/, если все ОК, то должен появиться.
, 09.10.2009 в 01:21
Когда-то в 2008 году я перевёл один из своих сайтов на UTF8 и написал.
Человек странное существо, которое страшно боится перемен и новшеств. К чему это приводит вы, кто живёт на пост советском пространстве наверное видели. По нашим дорогам до сих пор ездят отечественные автомобили похожие на металлические коробки, наши дороги сами давно устарели, наши родители по старинке воспитывают детей прививая им страх, жестокость и своё устарелое мировоззрение — от добра добра не ищут, если работает, то и незачем трогать и усовершенствовать.
Своими действиях я попытаюсь разорвать этот порочный круг. Каким таким образом? Ну во-первых, я сообщаю пользователям (90% — посещающим мой сайт по статистике), что Windows не единственная операционная система на которую вас подсадили, как на иглу, а Internet Explorer не единственный браузер с помощью, которого можно бороздить просторы интернет пространства. Существует десятки других, причём бесплатных и с открытым исходным кодом и во многих отношения лучших. Но обыватель зайдя в магазин, где продаются notebookи никогда об этом не узнает, потому что notebookи для Windows Vista и всё тут!
Во-вторых кодировка cp1251, которую используют наверное 90% русскоязычных ресурсов, совсем не единственная кодировка и далеко не самя лучшая, чего не скажешь о кодировке UTF8! Есть мнение — не существует самого лучшего браузера, самого лучшего текстового редактора, самой лучшей операционной системы… А самая лучшая кодировка существует. Это UTF‑8.
В кодировке UTF‑8 вы можете непосредственно включать в документ любые символы из всего набора Unicode. Старинные кодировки (например, Windows‑1251 или KOI8‑R) предоставляли не более 256 символов, а в Unicode есть свыше 100 000 символов. Среди них — типографские знаки (тире, кавычки, многоточие, апостроф, неразрывный пробел, неразрывный дефис и пр.), специальные символы (№, §, ©, ‰, × и пр.), буквы с диакритическими знаками и лигатуры (é, è, Ü, Æ, ø, fi и пр.), символы почти всех существующих в мире алфавитов (α, Ω, א, ת, ѣ, 伲, 儻 и пр.), пиктограммы и значки (→, ■, ♥, ☺ и пр.) и множество других символов.
Именно по этому свершилось то, что случилось и сайт NIKIZA теперь полностью переведён на UTF8 не смотря на то, что сотрудники хостинга AGAVA на котором базируется сайт считали это практически невозможным!
Вот такая история. Но многие, пользователи должны также хорошо себе представлять тот факт, что применение UTF8 раздует их базы данных если они имеются так как Windows-1251 — набор символов и кодировка, являющаяся стандартной 8-битной(1байт) кодировкой, а UTF-8 кодирует один символ от 1 до 4 байтов. Если мы берем латиницу, то это один байт, русский язык — двумя байтами. Китайский, кажется, все 4 байта. Так что вот русский контент увеличивается в два раза.
, 09.10.2009 в 01:27
…ого, человека задела эта тема!… и не спиться же в пол третьего ночи
, 09.10.2009 в 09:01
Спасибо за комментарий! Все абсолютно верно. У кого-нибудь еще осталось желание кодировать сайт в windows-1251?
По поводу раздувания баз данных. Размеры дискового пространства на столько велики, что для подавляющего большинства сайтов, увеличенная в два раза база данных, будет все равно бесконечно малой от общего дискового пространства хостинга.
, 15.01.2010 в 00:11
Сейчас я твою буйство живо сниму, прочитай текст и скажи в чем проблема
<?php
echo "Привет Hellou»; Отображается при UTF-8 и при ANSI
$str = «Привет Hellou»;
echo $str.»"; Отображается при Utf-8 и при ANSI
for ($i = 0; $i<strlen($str); $i++) {
echo $str[$i]; Отображается при UTF-8 и ANSI
}
echo "»;
echo $str[0]; Отображается ТОЛЬКО ПРИ ANSI
?>
Ну? В чем же здесь собака зарыта???
, 08.09.2010 в 16:04
Собака зарыта в том, что надо мат.часть читать.
Юникод состоит из 2байт минимум, даже UTF-8.
Соответственно операцией $str[0] — ты получаешь только первую часть символа.
Если хочешь получить весь символ сделай так:
echo $str[0].$str[1]; //получаешь первый символ
Можно так:
echo substr($str,0,2); //тоже первый символ
Или воспользуйся функциями mb_string:
mb_internal_encoding(«UTF-8″);
echo mb_substr($str,0,1); //тоже первый символ
Кто-то еще снизу спрашивал — аналогично!
Так что, свое буйство сам себе снимай.
А автору респект.
, 07.11.2010 в 19:20
> применение UTF8 раздует их базы данных
у меня как был файл 12 Кб в win1251, так и остался 12 Кб после конвертирования в utf-8
, 07.01.2011 в 05:46
первые 127 символов в UTF-8 совпадают с win1251, вот размер и не изменился.
Добавь русские буквы.
, 09.10.2009 в 01:41
Человек в Guanghou China у нас утро
, 13.10.2009 в 16:55
Доброго времени суток!
хотелось бы узнать а кодировка mysql влияет на кодировку самого тега «meta»
Просто на хостинге у меня вопросит знаки именно не у текста а у переменных которые вытаскиваются из БД. Помогите пожалуйста в чем проблема
, 13.10.2009 в 20:02
а ты как «вытаскиваешь» данные из БД?
, 14.10.2009 в 18:25
Базы данных, а так же таблицы в базе данных хранят содержимое в определенной кодировке. Кодировка базы данных или таблицы указывается при ее создании.
В Вашем случае HTML сайта сохранен в одной кодировке, а данные из таблицы загружаются в другой (т.к. именно в другой кодировке они туда и сохранены).
Вам нужно либо изменить кодировку HTML-части и поставить ее в соответствие кодировке базы данных. Либо наоборот, удалить таблицу и создать новую в соответствующей кодировке.
, 06.10.2010 в 16:11
Та же проблема. Пробовал и кодировку таблицы БД менять на utf-8, и новую таблицу в кодировке utf-8 создавал. Все равно вытаскиваются вопросы ????
, 06.10.2010 в 17:45
Решил проблему mysql_query(«set names utf8″);, но это же не выход! Видимо нужно каким то образом саму таблицу в БД прошивать. Простой установкой кодировки utf-8 даже при создании таблицы не получается.
, 15.08.2011 в 02:59
После подключения к базе данных делаем запрос: SET NAMES UTF8 и работаем как обычно. Это стандартное решение данной проблемы.
, 19.01.2012 в 15:51
Alexvb, спасибо за Ваш коммент! Около 6 часов пытался решить вопрос с кодировкой, волей случая зашел на сайт Андрея. Следовал всем инструкциям, несколько раз удалял и создавал таблицы, но лишь второе прочтение комментов к этой статье дало результат.
Андрей — отдельная благодарность за Вашу работу. Уже не первый раз у Вас в гостях:)
, 20.10.2009 в 15:13
Теперь я знаю на какую страницу давать ссылку горе-вебмастерам =D. Спасибо автору.
, 20.10.2009 в 15:43
Спасибо Вам за спасибо
, 15.01.2010 в 00:17
Друг, помоги пожалуйста… я уже запарился с этими кодировками… UTF-8 у меня не корректно работает… я программирую на PHP, и когда я обращаюсь к тексту через индекс, то у меня белеберта получается… тоесть $str = «абв»; echo $str[0], оно мне вместо положенного знака «а» фигню высвечивает, а когда прохожу по всей переменной цыклом, тоесть от первого до последнего символа то все показывает нормально, а отдельный символ не хочет, а при ANSI все в порядке.. помоги пожалуйста если не тяжело… ICQ 444920357
, 28.10.2009 в 14:28
Спасибо за полезную и простую в понимании статью.
Только что сменила кодировку и скрипт, который до этого
не проходил валидацию из-за некоторых символов, теперь прошел!
Сайт сохраню, наверняка еще много чего полезного есть…
, 30.10.2009 в 18:31
Рад, что статья оказала помощь.
Рекомендую подписаться на RSS или на обновления по эл. почте. Я стараюсь продолжать публиковать интересные материалы.
, 31.10.2009 в 17:31
Спасибо за статью — блог в ридер
, 02.11.2009 в 22:06
Только начинаю осваивать язык программирования ,веб-верстку и дизайн.оч рад что нашел твой сайт в интернете, приятно получать знания и учиться от человека с большим опытом и отдельное спасибо за рассылку!Все доступно,понятно и по делу,без воды!Надеюсь на долгое сотрудничество!!!
, 04.11.2009 в 00:30
Постараюсь оправдать надежды. Спасибо за положительную оценку материалов сайта.
, 10.11.2009 в 17:17
Да, сайт отличный. Нужно как-нибудь все посты почитать
Спасибо, Андрей.
, 10.11.2009 в 19:17
И Вам спасибо на добром слове! Я очень стараюсь сделать сайт интересным.
, 11.11.2009 в 15:28
Спасибо, Андрей, за статью! Исчез еще один пробел в знаниях
У меня такой вопрос. Есть сайт в кодировке windows-1251. Все браузеры отображают русскоязычный текст вполне корректно, в индексе гугла он есть. Однако если просмотреть этот сайт в новой опции Google webmaster tools — Fetch as Googlebot (так сказать, увидеть его глазами гугл-бота), то вся кириллица отображается в виде вопросительных знаков «в ромбиках». Вы не знаете, почему так происходит и насколько это критично для индексации сайта?
Спасибо.
, 11.11.2009 в 17:02
Рад был помочь!
По поводу вопроса, боюсь, я не смогу ответить на него квалифицированно. Могу лишь предположить, что проблема связанна с глюками просмотра в режиме Fetch as Googlebot.
Возможно сервер присылает неправильные заголовки, что принуждает Ваш браузер выбрать неправильную кодировку для отображения.
По поводу критичности для индексации: думаю, что это совсем не важно для индексации Вашего сайта. Но, это легко можно проверить, попробуйте поискать в Google-выдаче Ваш сайт, если все выводится нормально, то и Бог с ним.
, 12.11.2009 в 01:25
Сайт в индексе присутствует, есть позиции в топе, так что буду надеяться, что это не имеет значения. Спасибо!
, 13.11.2009 в 02:17
Что самое смешное, перепробовал все варианты и даже волшебная строчка не помогает. И ещё попробовал то, чего здесь не предлагалось (но помогло однажды для другого сайта), а именно в файл .htaccess дописал:
CharsetDisable On
AddDefaultCharset UTF-8
Никакой реакции. Остается только в техподдержку обратиться.
, 13.11.2009 в 02:31
вырезает код. Волшебная строчка имеется ввиду пункт 3 PHP-инструкция.
Не знаю как сюда код вставлять. 2 строчки последние не такие (потому что в этом виде они здесь предлагались), ещё одна смешная попытка описать код:
тег открыв. IfModule mod_charset.c тег. закрыв.
CharsetDisable On
тег открыв. /IfModule тег закрыв.
AddDefaultCharset UTF-8
, 13.11.2009 в 22:05
Да, код, к сожалению, вставить нельзя.
, 14.11.2009 в 19:43
Не правильно было бы все-таки не поделиться итогом. Когда я влез вручную настройку и задал там по умолчанию UTF-8 и после этого не помогло, я все-таки понял, что проблему надо искать в том, как я перекодировал сами файлы. Я переносил базу и файл базы с расширением sql перекодировал не обычным блокнотом (ему я уже к тому времени перестал доверять), а нашел очень вроде бы разрекламированную программу bred. О результате писал выше. Решил попробовать другую. Перечитал статью обратил внимание на «Инструменты для работы с кодировками HTML файлов
Ну а Вам спасибо.
Собственно, их всего три: …» Гм, всего три. ладно выбираю notepad, перекодировал файл с базой, залил на сервер. Ну и что Вы думаете? Все сразу исправилось. А потратил весь вечер о пол ночи на все это. так что bred оказался бредом
, 20.11.2009 в 23:26
Поучительная история. Вот так говнософт может привести к геморою на ровном месте.
, 20.11.2009 в 11:22
Андрей, может поможете с таким вопросом:
Создан хтмл-файл в кодировке UTF без BOM. кодировка — утф-8.
В итоге шрифт немного отличается(по жирности)в мозилле и в ИЕ(7-8), особо это заметно в больших заголовках, в итоге текст плывет.
Получилось это побороть только изменив кодировку самого файла на ANSI и win-1251 текста.
Можно ли как нить это побороть оставив кодировку utf-8?
, 20.11.2009 в 23:30
К сожалению, я не знаю решения этой проблемы и попросту не обращаю внимания на некоторую разницу в представлении шрифтов разными браузерами. Вам также рекомендую на это дело забить, потому что есть еще и Линукс (популярная Ubuntu), а там шрифты совсем другие (разница будет куда круче, чем в IE).
, 22.11.2009 в 06:26
ДА! Спасибо Вам огромное за труд. Очень помогло.
, 22.11.2009 в 11:23
Хорошо, что труд не оказался напрасным и статья Вам помогла.
, 26.11.2009 в 17:11
У меня есть код,но с этого времени он нормально на сайте не воспроизводится т.к руководство которое предоставляет хостинг перевели аппаратное обеспечение на кодировку UTF-8. И теперь отдлеьные элементы отображаются не правильно, как их исправить. Объясните на примере этого кода:
, 27.11.2009 в 14:01
Вам нужно задать этот вопрос хостинг-провайдеру.
, 28.11.2009 в 21:34
Спасибо, вот уже часа 2 сидел с этими кодировками..
Статья помогла)
, 03.12.2009 в 09:48
Есть вопрос. Если весь сайт в Винде-1251 (не по моей вине, желание заказчика) и надо вставить Гугл Мапсу (она в юникоде и вставляется ифреймом а не жаваскриптом, как когда-то).
В общем, в Опере вместо гугло-навигациию внтри карты — кракозябры. Как побороть никто не в курсе?
, 03.12.2009 в 09:52
Прогнал через iconv ифрейм и всё работает как надо
, 07.12.2009 в 17:49
Очень полезная статья, восполнила пробелы по кодировкам, спасибо!
Но есть вопрос, точнее, проблема, непосредственно связанная с кодировками, правда, не по созданию html, а по сохранению страниц.
В Avant Browser-е есть очень полезная опция меню Файл —> сохранить как HTML-файл (при конвейерной работе намного удобнее чем Ctrl+S «сохранить как» и выбирать формат html — т.к. там по умолчанию предлагается mht; и листать надо — при работе с тысячами страниц всё это в разы дольше, чем вышеуказанный вариант). Но в этом диалоге нельзя выбрать кодировку, и после переустановки Виндоса я продолжал сохранять как раньше, пока после нескольких месяцев работы не заметил, что тыщи страниц сохранялись вроде как в utf16-LE (так вещают все редакторы: нотепад++, ЕмЕдитор…), но как-то странно. Перекодировать кракозябры, возникшие на месте юникодных букв (типа диакритик во фр. языке, напр.) не удавалось ничем. Напр., та же буква É выводится как Г‰ и т.п. Методом злостного и длительного тыка удалось с помощью notepad++ найти алгоритм перекодировки, и то через задницу: сперва «преобразовать в ANSI» , а затем — «кодировать в UTF-8″ !! Вот такие пляски с бубнами…
Однако вопрос, собственно не в этом (там и вопроса не было
), а вот в чём: весной, на предыдущей Винде-то с тем же Avant Browser’ом всё нормально было!! Я «сохранял как html» и по умолчанию сохранялось всё в utf-8. Так где же это выставляется и меняется — чтобы по умолчанию *.htm сохранялись в utf-8, а не в какой-то иной кодировке — может быть, вы сможете подсказать? В настройках браузера (там не нашёл)? В настройках обозревателя? В каких-то модулях настройки соответствий файлов приложениям?
Мне ещё сохранять несколько десятков тыщ страниц (!) и если я не найду, как сделать так, чтобы по «Файл — сохранить как html-файл» *htm-шка сохранялась в utf-8, то это на недели усложнит работу
, 08.12.2009 в 14:37
Никогда с подобной проблемой не встречался.
, 08.12.2009 в 12:28
Здравствуйте, Андрей!
Очень рад, что открыл для себя Ваш сайт.
Хотел спросить, а отчего в Денвере может быть неправильная кодировка?
Переустановка Денвера не помогла.
, 08.12.2009 в 14:38
Где-то в настройках Денвера указана директива отображения страниц определенной кодировкой. Если ее удалить, то все работает нормально. Сейчас уже не помню где, попробую найти.
, 14.12.2009 в 13:46
Здравствуйте, Андрей!
Я совсем запутался в этих кодировках)) Нужна помощь, вот мой сайт http://mu-hu-hu.ru/ — в экслорере и мазиле надо постоянно менять кодировку а в опере нормально автоматически становиться на русский. Незнаю как сделать так чтобы русский текст был везде. Или может у меня какаято ошибка? пробывал сохранить хтмл в utf-8 но чтото неполучается
, 14.12.2009 в 14:00
Дима, я конечно не Андрей, но надеюсь вы не против, если я выражу своё мнение. Для начала я бы порекомендовал прописать Доктайп и кодировку в мета-теге.
Кодировка:
meta http-equiv=»Content-Type» content=»text/html; charset=windows-1251″
А Доктайп вы сами пропишите. Здесь на блоге, есть статья специальная. Почитайте, а потом решите, дальше извращаться с XHTML или поставить нормальную HTML кодировку.
, 14.12.2009 в 14:02
Я указал мета-тег для случая, если вы хотите использовать кодировку windows-1251. Конечно лучше имхо сохранить в UTF-8 и соотвественно подредактировать эту строчку.
, 14.12.2009 в 15:10
Never Lex — спасибо большое, вроде получилось))
, 14.12.2009 в 15:18
Пожалуйста. Рад помочь. Только кавычки в Доктайпе подправьте.
, 14.12.2009 в 15:55
, 14.12.2009 в 17:30
Never Lex, а что не так с ковычками? ))
“ исправить на » ? — мне кажется безразницы, или я ошибаюсь?)
, 14.12.2009 в 17:35
Да, нужно исправить.
Ошибаетесь. Сейчас браузер видит просто некорректный тег.
, 14.12.2009 в 18:40
окей! два дня мучался и наконец-то сделал, ещё раз спасибо))
, 22.12.2009 в 21:36
Здравствуйте!
Скажите пожалуйста.Есть флэш шаблон,*xml со всеми настройками,сама флэшка, иии *html,ну всё как положено.Файлы *xml;*html, в кодировке ISO-8859-1,как не пытался переводить,всё безуспешно.Они переводятся,но русские символы не видет,просто пустота.
Содержание *html,первая строчка:(в конце размеры это понятно).
Содержание *xml,первая строчка:
После кодировки переписывал вместо iso,utf-8,в обеих документах,тоже самое.
, 23.12.2009 в 00:11
Я с флешем не работал, ничем не могу помочь.
, 04.01.2010 в 21:19
Здравствуйте, Андрей!
Ваша статья понравилась и как результат сразу в «бой».
Проблема образовалась сразу, поменял кодировку windows-1251 на
UTF-8 и тексты пропали, остались только знаки препинания((
Получается, что тексты вставлять заново?
, 04.01.2010 в 21:43
При перекодировке символы никуда не пропадают, он лишь заменяются другой кодовой последовательностью.
Либо браузер не правильно отображает новую кодировку из-за неверных директив, указывающих на правила отображения (например, meta http-equiv=»Content-Type» content=»text/html; charset=…» или каких-либо других, описанных в статье) либо неправильно произведена перекодировка (это странно, если Вы действуете по описанному мной алгоритму).
, 09.09.2010 в 23:53
Похожая проблема, но в других масштабах.
Сайт ранее был на W-1251. Пытался в разных редакторах автоматически менять в meta charset на UTF — весь текст превращается в квадратики, причём безвозвратно. Если же эту операцию делать вручную — открыть страницу, заменить, закрыть — всё прекрасно. Но страниц таких у меня — 4т. Есть ли способом автоматически заменить грамотно кодировки на всех страницах?
, 17.12.2010 в 18:47
Сам себе отвечу
.
Нашёлся один редактор, который корректно преобразовал W-1251 в UTF — PSPad
, 07.01.2010 в 12:16
Хорошая статья, автор постарался разъяснить до мелочей, респект!
, 10.01.2010 в 03:00
Здравствуйте! Подскажите пожалуйста как решить эту проблему:
Сайт в кодировке utf-8 мне нужно вывести на странице вот этот скрипт, но он отображается не правильно как быть?
anikdot*ru/cgi-bin/sado.cgi
, 10.01.2010 в 10:54
Поменять кодировку страницы на ту, в которой выводит данные этот скрипт.
, 10.01.2010 в 15:11
=) Это было бы слишком просто. Тогда вся остальная страница будет в кракозябрах или начнутся еще какие нибудь проблемы (сайт на юкозе). Просто я подумал может можно на странице с кодировкой utf-8 в какой-то части вывести скрипт (в моем случае скрип анекдотов) в кодировке win-1251 или браузер не может на одной странице выводить разные кодировки?
, 14.01.2010 в 16:08
МЕНЯ ТОЖЕ ИНТЕРЕСУЕТ ЭТО ВОПРОС. ЕСЛИ КТО РАЗОБРАЛСЯ, НАПИШИТЕ, ПЛИЗЗЗ
, 14.01.2010 в 16:14
А зачем на УКОЗе сайт в УТФ? Хотите сделать нормальный сайт — переезжайте на человеческий хостинг
, 14.01.2010 в 20:02
А человеческий хостинг по вашему должен быть в win-1251 ? =))
Переезжаем конечно по мере возможностей!
, 15.01.2010 в 02:36
Вот кому надо:
Решение как и предполагалось проще некуда =)
, 15.01.2010 в 02:41
Кароч нельзя здесь скрипты вставлять, держите сами разберетесь.
, 15.01.2010 в 11:01
а что держать?
, 15.01.2010 в 11:00
это первое, что пришло в голову!
но если так не получается?
, 15.01.2010 в 15:35
Дмитрий сюда нельзя вставить текст он просто пропадает.
Вот еще раз попробую кусочек, самое главное.
Этот текст надо вставить в скрипт.
charset=»WINDOWS-1251″
и все =)
, 12.01.2010 в 06:04
Здравствуйте Андрей!
Не могу понять в чем дело. Сделал все как в вашей инструкции.
Скачал с csstool.ru шаблон, распаковал. В программе PSPad выставил в utf-8 и открыл файлы скачанного шаблона. Потом изменил английский текст на русский и сохранил — а на странице кразядабра. Из-за чего это?
С уважением, Валерий.
, 12.01.2010 в 18:56
Во-первых: нужно сначала открыть файл в PSPad, а уж потом менять кодировку.
Во-вторых: что написано у Вас в meta charset=…? Должно быть вот так:
чтобы браузер был проинформирован о примененной кодировке и правильно отобразил символы.
, 12.01.2010 в 19:23
Здравствуйт Андрей!
Мета у меня уже была установлена, помните я же скачал шаблон с csstool.ru
Я решил проблему. В денвере поменял в файле httpd.conf строку AddDefaultCharset windows cp2151 на AddDefaultCharset utf-8 и все нормально стало. В денвере файл httpd.conf находится WebServers\usr\local\apache\conf.
, 15.01.2010 в 20:45
У меня были подобные проблемы с кодировкой и кракозяблами, причём не на всех компах а на парочке из всех испытуемых. У остальных всё было круто. Поменял в notepad++ кодировку и всё нормализовалось. Полезная статейка.
, 17.01.2010 в 08:57
Спасибо за статью, Андрей. Не знал, что в Notepad++ нужно использовать UTF without BOM. Исправил.
, 24.01.2010 в 17:07
Здравствуйте.
Проблема с кодировкой в Мозилле.
Почему в Мозилле кодировка автоматически, при обновлении страницы меняется с UTF-8 на windows-1251? Соответственно, и страница, по вышеописанным Вами методам сохраненная в юникоде, отображается в дебильной Мозилле в 1251 —>> кракозябры.
, 24.01.2010 в 17:31
Жюльет, учитывая что Мозилла для вас дебильная, необходимо вас сначала спросить какая кодировка указанна в документе по умолчанию? (что прописанно в верхней части документа?)
, 24.01.2010 в 17:44
Уважаемый Василий.
Я в тупике 2-й день с этой мозиллой, это очень много — поэтому и «дебильная».
Там дело в том, что кодировка в документе по умолчанию юникод, т.е. в верхней части документа прописано .
Тестирую будущий сайт при помощи Денвера.
Итак, открываем документ в Мозилле — и видим кракозябры.
В меню «Вид» меняем кодировку на utf-8 — вуаля, все норм.
Но стоит обновить страницу — снова видим кракозябры, заходим в «Вид» — о-па, отчего-то кодировка снова windows-1251, а не utf-8.
В ИЕ6, ИЕ8, Опере, Google Chrome документ отображается корректно.
, 24.01.2010 в 17:49
А в .htaccess у вас (в денвере) не указанна win-1251?
, 24.01.2010 в 18:02
в .htaccess ничего такого не указывается в денвере… зато в httpd.conf нашла-таки предательскую строчку
«#
# Denwer: default charset.
#
AddDefaultCharset windows-1251″
и переписала на UTF-8, и все — проблема решена.
Но! Почему же именно с Мозиллой такой баг? Другие браузеры нормально все воспринимали, даже ИЕ6)) Ладно, будем пока это считать загадкой Денвера, потом поразбираюсь еще.
Василий, благодарю за идею, натолкнувшую на путь решения проблемы!
С уважением, Julliet
, 24.01.2010 в 17:48
Код тут непонятно как вставлять, разбираться некогда, еще раз… самое главное, что написано в верхней части документа: charset=utf-8
, 24.01.2010 в 18:06
Жульет почитайте пост на этой-же странице
Автор: Валерий, 12.01.2010 в 19:23
, 29.01.2010 в 21:02
Ай маладца. Спасибо. Помог.
В закладки )))))
, 08.02.2010 в 18:06
Андрей!
Установил кодировку на новых страницах на php и в Denvere (Denwer: default charset.AddDefaultCharset UTF-8″) UTF-8 теперь все крякозябрами ((( приходится вручную менять в браузере кодировку (он ставит автоматом Win-1251), как добиться чтобы было все корректно?
Спасибо заранее.
, 08.02.2010 в 23:06
Автор: Never Lex, 14.12.2009 в 14:00
http://www.sdelaysite.com/kniga/verstka-kniga/html-kodirovka#comment-1860
, 11.02.2010 в 23:19
Большое СПАСИБО автору статьи, очень помогла!!! «против такого лома…» — этот вариант прокатил по всем статьям!!!
, 12.02.2010 в 11:46
у меня проблема с кодировкой решилась как-то странно.
в dreamweaver при подключении к базам данных вписал:
mysql_query(«SET NAMES cp1251″);
кодировку здесь же сделал cp2151, но…
сама MySQL полностью utf8_unicode_ci и сравнение на всякай такое же
иначе что в самом dream что в браузере кракозябры русского текста
(работаю на denwer)
PS мне надо именно utf8, чтобы везде
PS сделал все что советовали и в dreamweaver и в my.cnf, php.ini, EncodingMenu.xml, uncheck Include Unicode Signature (BOM), htaccess
, 28.02.2010 в 11:51
Я тебе скажу так денвер отстой, ни одна моя программа на денвере вообще не работала, поэтому я поставил PHP + Apache, и если задуматься сама деректория PHP у меня занимает 25 МБ, но денвер при этом содержащий PHP Apache MySQL занимает всего 10 МБ!! Это представьте как его жестко урезели, если сама mySQL занимает чуть ли 100 МБ
, 13.02.2010 в 22:19
после подключения базы:
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
дописал строчку:
mysql_query(«SET NAMES utf8″);
и заработало…
при этом в денвере в httpd.conf монопенисуально, какой стоит AddDefaultCharset
, 14.02.2010 в 02:09
монопенисуально =))))) гениально
Это как же вы умудрились такое слово написать =)
, 15.02.2010 в 09:01
Вот спасибо… AddDefaultCharset здесь поставил utf8 и заработало
, 15.02.2010 в 09:11
блин поспешил, не работает
, 26.02.2010 в 10:46
Здравствуйте! Спасибо за статью! После нее я даже не задумываясь сделала сайт в utf-8, но у меня проблема. Открывая свой сайт на компьютере, все ок, а попробовав загрузить его в интернет, появляются каракули… В чем может быть дело?
, 26.02.2010 в 11:01
В панели в настройках WWW домены укажите utf8 или в панели зайдите в менеджер файлов и впишите в файл .codepage utf8 вместо win1251
, 26.02.2010 в 11:01
А если я пытаюсь поменять в документе кодировку на windows-1251, то текст превращается в каракули и при загрузке с компа, и в интернете…
, 26.02.2010 в 11:11
Не указывайте браузеру win-1251 если сам текст в utf8.
Панель управления вашим хостом. Вы ведь не на народе свой сайт выкладываете =)
, 05.07.2010 в 12:45
А можно про народ поподробнее? По умолчанию стоит utf8 — кидаю на народ выходят кракозябли. непоможете разобраться?
, 26.02.2010 в 11:04
Вася, спасибо за ответ, но можно поподробнее, я первый раз столкнулась с такой проблемой. Какую панель вы имеете ввиду?
, 26.02.2010 в 11:12
Спасибо! Хорошая статья, помогла и мне в проблемах с кодировкой)
, 26.02.2010 в 11:19
Вася, в мета-теге у меня на всех страницах прописан utf-8, а хостингом я управляю через Total Commander, не подскажете где в нем такие настройки?
, 26.02.2010 в 11:36
Через Total Commander вы сможете добраться только до файлов .codepage или .htaccess проверьте что в них указанно. Вам надо зайти на сайт своего хостера, там будет панель управления вашим хостом, и там производить глобальные настройки кодировки! Вы знаете у кого находится ваш сайт?
, 26.02.2010 в 11:46
Да, хостинг от vitay.by, тариф «статика», но что-то у них на сайте нет никакой панели управления…
, 26.02.2010 в 12:04
У вас доступ только в папки htdocs и logs =))
Зайдите в папку htdocs там должен быть файл .htaccess в нем ищите кодировку (аккуратней с файлом не натворите там делов) если внутри этого файла кодировка не прописанна то пишите суппорту они вам помогут!
, 26.02.2010 в 12:11
Да уж, придется связываться с поддержкой, потому что файла .htaccess там вообще нет, только мои загруженные html-файлики…
Вася, спасибо за помощь! Вы мне очень помогли разобраться!
, 26.02.2010 в 12:20
Интересно что в инструкции на ваш тариф написанно что вы можете изменить индексный путь именно в этом файле, а его там вообще нет, Может просто попробуете его создать и прописать в нем только кодировку? по идее должно сработать =)!
, 26.02.2010 в 12:28
Я так и пробовала первым делом после прочтения статьи: создала сама этот файл, но ничего не изменилось, как будто его там вообще нет…
, 28.02.2010 в 11:53
Надеюсь админимтратор сайта не будет против если я выложу справочник по настройки Apache 2.2 PHP 5.2.11 MySQL 5.1 PHPMyAdmin 3.3
http://letitbit.net/download/0469.c0d57ab0d3f72aa82c87d11e1/Apach_PHP_MySQL_PHPMyAdmin.zip.html
, 03.03.2010 в 09:46
Администратор сайта не против.
, 01.03.2010 в 07:52
Громадное спасибо! объяснение доступно для новичка, легко решена проблема.
, 04.03.2010 в 15:25
Огромное спасибо за статью!
, 06.03.2010 в 21:02
Почему удалили мое сообщение? Помогите разобраться
, 10.03.2010 в 15:55
Пост помог быстренько разобраться с кодировкой при установке CMS Modx на Denwer.
Первоначально при выборе для установки русского языка, появляются пресловутые крякозябры. И нигде не мог найти в инете способа исправления этой бяки.
Прочитал у вас, что можно при помощи файла .htaccess направить modx на путь истинный, попробовал и ура! получилось.
Так же исчезла подобная проблема при поиске на этой cms.
Всем рекомендую для изучения это пост!
, 11.03.2010 в 01:45
ЗА СТАТЬЮ ЖМУ ЛАПУ!!!
Но вопрос остался с МАЗИЛЛОЙ. Да ещё, когда в нём открываешь и смотришь свойства страницы, то указывает кодировку windows-1251, а вот с IE end Opera — всё ОК!!! И «НА ХВОСТЕ» заодно: В ОПЕРА не показывает картинки
G01
, а в IE & Firefox всё ОК
, 16.03.2010 в 12:05
Спасибо огромное за статью! Очень рад что в рунете есть люди которые пишут качественный материал.