Страница 1 из 1

Кодировка файлов (UTF-8, Windows-1251)

Добавлено: 31 мар 2012, 13:20
Александр
Кодировка файлов (UTF-8, Windows-1251)

В этой статье речь пойдёт о том какую кодировку стоит использовать на своих сайтах и в своих скриптах.


Популярные кодировки

В веб-разработке популярны кодировки Windows-1251 и UTF-8.

Windows-1251 (CP-1251)
В этой кодировке есть практически все символы, которые необходимы для русскоязычных сайтов. Некоторые спецсимволы и буквы из других языков отображаться не будут.

UTF-8
В этой кодировке содержаться практически все существующие символы.
Важный момент! UTF-8 может быть с сигнатурой (Byte Order Mark, BOM) или без сигнатуры.
Чтобы не возникали лишние проблемы, лучше использовать UTF-8 без BOM.


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

Я рекомендую использовать кодировку UTF-8 без BOM.

Если требуется взаимодействие приложения с сервером посредством URLRequest в ActionScript или AJAX в JavaScript, то при работе с другой кодировкой могут возникать проблемы - вместо нормального текста будут приходить крякозябры.
ActionScript работает с данными в кодировке UTF-8. Чтобы работать с кодировкой Windows-1251 необходимо будет вручную преобразовывать текст.
В JavaScript при использовании UTF-8 без BOM тоже не появляются лишние проблемы с кодировкой.

Используйте для всех файлов кодировку UTF-8 без BOM. Для html, php, txt, js, css. Если работаете с базой данных, то храните в ней данные в кодировке UTF-8.
Если вы будете смешивать разные кодировки, то усложните свою работу.

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


Использование iconv в php

Многие начинающие и неопытные "программисты", не задумываются о кодировке и потом часто используют функцию iconv для преобразование текста в нужную кодировку.
Не стоит где попало использовать функцию iconv в php. Это затратная функция, она потребляет ресурсы сервера. Бывают случаи когда эту функцию надо использовать, но если вы используете её в каждом скрипте, то задумайтесь о том чтобы переделать проект под нужную кодировку.


Как поменять кодировку файла

Для того чтобы менять кодировку файлов, я рекомендую использовать Notepad++.
В обычном блокноте вы можете столкнуться с тем, что файлы будут сохраняться не в нужной кодировке (UTF-8 с BOM).

В меню Notepad++ есть пункт «Кодировки - Преобразовать в UTF-8 без BOM».
В настройках можно установить эту кодировку для новых файлов по умолчанию.

В нижней статус строке можно узнать текущую кодировку файла.


Настройки сервера

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

Если есть доступ к настройкам через файл .htaccess, надо написать в нем

Код: Выделить всё

AddDefaultCharset utf-8
Если доступа к этому файлу нет, то возможно кодировку по умолчанию можно поменять в админке вашего хостера.

Если ни одной из этих возможностей нет, то задумайтесь о смене вашего хостера.

Re: Кодировка файлов (UTF-8, Windows-1251)

Добавлено: 31 мар 2012, 17:19
alexei
Не советую хранить .css, js без текста в UTF-8. Лучше использовать, что-то более легкое.

Re: Кодировка файлов (UTF-8, Windows-1251)

Добавлено: 31 мар 2012, 18:06
Александр
alexei
css обычно содержит мало или вообще не содержит кириллицы. Больше такой файл в кодировке utf-8 весить не будет.
Тоже самое и с js, если не содержит кириллицы, то и объем не будет больше. А вот если страница в UTF-8, а js в cp1251 и в js код выводит кириллический текст, то будут проблемы с кодировкой.

Re: Кодировка файлов (UTF-8, Windows-1251)

Добавлено: 31 мар 2012, 18:23
alexei
Александр писал(а):alexei
css обычно содержит мало или вообще не содержит кириллицы. Больше такой файл в кодировке utf-8 весить не будет.
Тоже самое и с js, если не содержит кириллицы, то и объем не будет больше. А вот если страница в UTF-8, а js в cp1251 и в js код выводит кириллический текст, то будут проблемы с кодировкой.
Обычно любят кириллические комментарии.