Top.Mail.Ru
Ответы

Windows-1251 vs UTF-8 (Прокомментируйте пожалуйста -->...) Спасибо!

Дополнен

UTF-8 − это, по сути, никакая не кодировка, а формат обмена данными, единственным достоинством которого является частичная совместимость с ASCII.
Настоящей Unicode-кодировкой является UTF-16, или UCS-2, но она пока мало распространена и плохо поддерживается.
Когда PHP и MySQL начнут полноценно поддерживать UTF-16, тогда, возможно, и я перейду на юникод;
UTF-8 работает гораздо медленнее других кодировок (из-за непостоянной длины символа в байтах) . К примеру, чтобы найти длину строки в CP1251,
достаточно взять заранее известную длину ее в байтах.
В случае UTF-8 этого недостаточно, необходимо "пробежаться" по всей строке, и посчитать количество открывающих знакомест.
В зависимости от структуры и объема ваших данных, переезд на UTF-8 может стоить вам от 3- до 5-кратного замедления строковых операций в MySQL.
Строки в кодировке UTF-8 критичны к своему содержимому, и при добавлении данных может случиться ошибка "строка не является валидной",
чего никогда не бывает с однобайтовыми кодировками. То есть все входящие данные нужно дополнительно проверять на соответствие стандартам UTF-8
(так называемая канонизация) .
Строки на русском языке, хранимые в кодировке UTF-8, занимают ровно в два раза больше места на диске. Соответственно расходуется и оперативная память сервера.
Вывод простой: если вам не смерть как нужны китайские и японские иероглифы на сайте, используйте однобайтовые кодировки.
В случае, если UTF-8 действительно необходим и без него никак (многоязычный сайт) , ну тогда UTF-8.

Дополнен
По дате
По рейтингу
Аватар пользователя
Новичок
14лет

Хотелось бы немного рассказать об особенностях UTF кодировки и для чего она нужна, а также стоит или нет переходит на эту кодировку, если ваш сайт уже стоит с использованием кодировки windows-1251.

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

1. Размер базы данных русскоязычного сайта будет примерно на 70% больше по сравнению с использованием национальной кодировки windows-1251, что соответственно скажется на производительности сайтов с большими базами данных.

2. Шаблоны и языковые файлы для кодировки имеют специфический формат файлов (UTF формат без BOM байтов) , соответственно для редактирования файлов шаблона вам понадобятся специализированные редакторы, поддерживающие этот формат. Из бесплатных это например notepad++. Сохранение этих файлов в неверном формате приведет к нечитаемости вашего сайта.

Поэтому мы не рекомендуем использовать кодировку UTF-8 на сайте, если вы не планируете использование на сайте других языков, отличных от русского, английского, украинского языков.

Аватар пользователя
Гуру
14лет

если файл текстовой весит один терабайт то я думаю это бутет существенно...