С yii работу только начинаю, хотел сделать на yii сайт в кодировке 1251 (БД и интерфейс). Будут ли у меня проблемы? Пока столкнулся только с грозной надписью в messages: "NOTE, this file must be saved in UTF-8 encoding". Это действительно важно? Есть ли подводные камни при использовании в yii кодировок, отличных от utf-8?
Нужно будет перекодировать файл локализаций самого Yii в CP1251
проставить кодировку в app
наблюдать периодические глюки когда одна страница отображается в браузерах нормально, вторая ни с того ни с сего определяется как utf-8 хотя в мета всё верно прописано
Я, если честно, не очень в курсе. Этим не я занимался. Но там что-то вроде того, что пятый пхп не поддерживат регулярные выражения в utf8 с кириллицей. Вернее, не то, что не поддерживает, а они как-то не так отрабатывают.
таки-щито нужно сделать, уважаемый, подскажите, молю
…config/main.php
return array(
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
'name'=>'Справочник по борьбе с клиентами',
'charset' => 'Windows-1251',
...blah...
и .htaccess в вебруте с
AddDefaultCharset Windows-1251
всё равно content-type приходит с utf-8
искал по всему yii строки с header - не нашёл где выставляется контент тайп 8(
UTF8 - 2 байта. Работа с cp1251 нам нет необходимости ставить mbstring и работать с неудобными mb_substr, mb_strlen, mb_strpos, mb_strstr, mb_strtolower, и десятками другими функциями. Так же получение данных в cp1251 - быстрей в 2 раза. Необходимость в UTF8 проявляется только если вы делаете сайт на языке который не поддерживается в cp.
Она и так в анси
Ни разу такого не наблюдал…
Думаю все останавливаются на русском и английском.
Не знаю как у вас, а у нас в России в обозримом будущем китайский не планируют делать родным языком, поэтому преждевременные проблемы с utf8 никому не нужны. cp1251 с головой устраивает.
[quote name=‘Zolter’]Поэтому все выбирают более “умную” кодировку, при этом не теряют ничего. От выбора utf8 вам хуже не будет, только лучше. Поверьте мне!
[/quote]
Мда… вот и верь после этого людям.
бОльший объем памяти плюс падение производительности минимум в 2 раза - это "только лучше"?
Например, разработчики MySQL (в штатной документации) рекомендуют экономить на объеме данных в базе, например, не использовать int там, где достаточно smallint, а вы по широте душевной предлагаете тупо увеличить объем базы в 2 раза за счет хранения данных в 2-байтовой кодировке. Тем более в подавляющем большинстве проектов, где оно 300 лет никому не надо.
Точно так же эта "умная" кодировка отражается и на объеме потребляемой оперативной памяти, торможения в любых строковых операциях (сортировки, поиск, …).
UTF - буду использовать только тогда, когда реально понадобится поддержка многоязычности (ну, например, аналог мыло-ру захочу сделать), а в других случаях мне тормоза и прочие сложности не нужны.
Сразу скажу, что спорить и переубеждать никого ни в чем я не собираюсь. Хочу только внести некоторую ясность, связанную с якобы большим объемом используемой памяти.
Не стоит путать UTF-8 с UTF-16. Во втором случае действительно все символы представляются в виде двухбайтовых кодов, а вот с UTF-8 всё немного хитрее (прочитать можно на википедии). Если кратко, то английские буквы, цифры и различные стандартные символы (точка, тире, пробел и т.д.) занимают один байт.
Что из этого следует? Только то, что на самом деле потери в памяти будут не столь большими (ведь значительная часть HTML документа - это теги + яваскрипты + css). Зато если вам вдруг захочется вставить в текст какой-нибудь экзотический символ (α), то не придется писать что-то вроде α.
В общем, всё как всегда зависит от задачи, а подобные вечные споры не кончатся никогда (но всё-таки надеюсь, что кончатся ). Вот ещё небольшая статейка: http://denvor.ru/art/misc/windows-1251_vs_utf-8.htm
Подскажите те, кто использует в своих проектах 1251. Как вы боритесь с кодировкой js-скриптов?
в стандартном блоге yii прописал везде 1251. база mssql. Данные отображаются нормально. Проблемы появились на странице админа, где выводится таблица с фильтрами, которые аяксом подгружают фильтрованные данные. аякс отправляет данные в utf-8. на стороне сервера я iconv’ом перевел в 1251. данные стали нормально фильтроваться, но после генерации в поле фильтра появляется текст в utf-8.
Объект XmlHttpRequest в JavaScript работает только с UTF8. Инструменты многие в php - типа json_encode - работают тоже только с utf-8. Есть куча костылей, которые помогут работать с 1251 кодировками.
Но зачем это все? Ради символичного выигрыша в весе документа - используйте gzip, сжимает он текст очень хорошо. Ради старой базы данных - да переконвертить гораздо быстрее, чем латать глюки в js. Не нравится mb_* - много ли вы их используете? Обычно все сводится к проверкам. В свое время я попал на проект с кучей js и кодировкой 1251 - затрат н исправление багов получалось слишком много - интеграция с вебсервисами, Ajax, использование сторонних компонент - все было утыкано iconv.