Apache 2.2.12 - как включить поддержку кириллицы?
ru ISO-8859-5 Russian
uk ISO-8859-5 Ukrainian
заменил ISO-8859-5 на windows-1251 - не помогло...
не знаю что делать, стыдно, но похожих тем в инете не нашел...
Не распознается где? Ну и подробнее сами симптомы распишите.
<meta http-equiv="Content-Type" content="text/html; harset=windows-1251">
Вся кириллица выводится как "?????????" в любом браузере...
Естественно, я не имел в виду, что у меня в самой винде с кириллицой проблемы... Там все нормально. Но раньше проблем вообще не было(до переустановки).
<meta http-equiv="Content-Type" content="text/html; harset=windows-1251">
Если строго по вашему коду, то "charset". :) Если это здесь опечатка - тогда ладно, а если так и писали - могли быть проблемы.
Чесно говоря, не помню как тогда было...
Сейчас
charset=windows-1251
попробовал:
заменил charset=windows-1251 на harset=windows-1251
работает...
Вообще убрал строку <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
снова работает. Конечно же я сохранял изменения и обновлял страницу (в опере и IE).
Думаю всетаки заглючил Dreamweaver:)...
Точно! Файлы сохранены уже со знаками вопросов. Такое случается каждый раз, когда создаю новую страницу. Я так понимаю, в настройках надо поменять, чтоб новые страницы создавались с кодировкой windows-1251. Только у меня не получается найти, где это сделать))
Марш читать про Уникод!
Или по приколу вместо 1 байта кидать 2?
Или по приколу вместо 1 байта кидать 2?
Вам тоже надо пройти по указанной выше ссылке и прочитать
Байты жалко? :D А теперь оцени количество текста на русском языке и колиечество разметки - ее символы как и прежде будут кодироваться одним байтом. Добавь к этой оценке потенциальную возможность использования языков отличных от английского и русского, либо специальных символов (диакритика, лигатуры и т.п.).
Почитал. Очень впечатлил раздел про недостатки Юникода.
Ну, байты как бы действительно жалко. Как описано по вашей же ссылке, Юникод в памяти сжирает больше места. Что, например, может быть критично для мобильных устройств.
И потом, все нормальные бравзеры подерживают вин1251.
Думаю, большинство разработчиков здесь пишут непосредственно русскоязычные или англоязычные проекты. Кто пишет на иврите, отзовитесь!
Для использования лигатур можно использовать &#xxxx;.
А для вставки мнемоников и наиболее распространенных символов (включая греческие), можно использовать достаточно наглядную таблицу мнемоников.
Нет, я не уговариваю кого-то перелезть с Юникода на Кириллицу, просто тема начиналась с включения поддержки кириллицы в апаче (меня пугают проблемы ТС),а вы начали толковать про Юникод.
З.Ы, указанную выше ссылку периодически использую себе в помощь.
З.Ы.Ы. лично меня очень сильно напрягают ресурсы на юникоде и когда юзвери начинают ляпать себе ники в виде набора арабских символов рисуя сердечки и т.д...
Измерения в студию!
Мне уже страшно за JVM и CompactFramework, у которых все строки в памяти живут в UTF-16 (два байта на символ).
А для вставки мнемоников и наиболее распространенных символов (включая греческие), можно использовать достаточно наглядную таблицу мнемоников.
А как ты будешь эти символы в памяти-то держать, если у тебя кодировка - однобайтовая. :D
+ если уж так критичен объем документа, то gzip/deflate никто не отменял)
Тем, более, как выше люди отметили, обычно на разметку уходит больше байт - гляньте на тот же исходный код этой страницы - смысловая инфа в виде текста занимает явно на порядок меньше, чем объемы разметки.
Кстати, глянул:
Собственно вот. Надеюсь вы не будете ругать ресурс, на котором общаетесь...
Топикстартеру: Открываете в блокноте httpd.conf (в папке с апачем) и щиете:
AddDefaultCharset
у меня это AddDefaultCharset windows-1251
Если этого там нет, ТО ДОБАВЛЯЕТЕ СТРОКУ:
AddDefaultCharset windows-1251
Ещё как будем :)
Хотя мне в сущности глубоко наплевать какая тут кодировка используется - исходники отображаются и ладно (но глюки с копированием-вставкой бывают, да). Я вижу, что в проектах, в которых я сейчас занят, используются базы с текстами на добром десятке языков (включая китайский), более того, эти проекты потенциально могут быть на эти языки локализованы. Даже при тотальном использовании Юникода, косяки связанные с однобайтовыми кодировками изредка встречаются: кто-то банально опечатался, и в хранимой процедуре вместо типа переменной nvarchar написал varchar - все, диакритика пошла лесом ещё на уровне БД.
Для меня ответ очевиден - однобайтовые кодировки доставляют лишь одни неудобства.
К тому же о каких байтах беспокоиться в век многомегабитных соединений. Вы там что гигабайты текста рассылаете?
К тому же о каких байтах беспокоиться в век многомегабитных соединений. Вы там что гигабайты текста рассылаете?
Откровенное хамство. Я тебе не хамил.
2 ALL:
При использовании AJAX - используйте только UTF-8 во избежание проблем с кодировкой ответов\запросов...
В других случаях использование win-1251 будет вполне уместным...
Хотя мне в сущности глубоко наплевать какая тут кодировка используется - исходники отображаются и ладно (но глюки с копированием-вставкой бывают, да). Я вижу, что в проектах, в которых я сейчас занят, используются базы с текстами на добром десятке языков (включая китайский), более того, эти проекты потенциально могут быть на эти языки локализованы. Даже при тотальном использовании Юникода, косяки связанные с однобайтовыми кодировками изредка встречаются: кто-то банально опечатался, и в хранимой процедуре вместо типа переменной nvarchar написал varchar - все, диакритика пошла лесом ещё на уровне БД.
Для меня ответ очевиден - однобайтовые кодировки доставляют лишь одни неудобства.
Вот кстати по поводу БД...
Не знаю почему, большинство хостингов, которые я использовал таблицы в БД делают по-умолчанию в Cyrillic_General_CI (cp1251)... Если таблицы в UTF - не создает ли это проблем при поиске, увеличения размера таблиц при хранении и т.д???
2 RussianSpy
Вот кстати Юникод... хорошо ли работают функции strlen, substr, preg_match ??? без НЕДО-костылей и псевдофункций?
Только честно.
Многие (и я в их числе) сталкивался с проблемой работы строковых функций в ПХП, т.к. они расчитаны на однобайтовые кодировки...
Если знаешь, как это побороть - расскажи. По возможности - без иронии.
По теме - не пойму, что плохого в юникоде? Только в том, что он больше места занимает? Я вот, когда пишу более-менее проект (или вообще какой-либо заказ), то всегда смотрю в будущее (пусть проект может быть и однодневкой).
А будущее показывает, что проект может расшириться и потребовать изменения кодировки. А может быть проект будет поддерживать индус, у которого вообще windows-1251 не стоит и он его не видел в помине.
Так не лучше ли сразу делать так, чтобы было хорошо? Чтобы в будущем не было головных болей и совершенствование проекта происходило более быстро.
Вспоминаю пример, когда мне надо было доработать (и частично кое-где перефразировать) какую-то поделку то ли немецкого, то ли австрийского происхождения. Со всеми "умлаутами" и прочими прелестями их кодировки и языка. В итоге, я долго матерился, но с горем пополам все перевел в утф8 - потому что работать с "неродной" кодировкой очень сложно - постоянные баги то в редакторе, то при выводе на страницу, то при редактировании БД.
P.S.: а что было бы, если бы заказчик вдруг внезапно захотел бы писать тексты на русском, но движок оставить именно этот?
Для этого есть функции mb_strlen, md_substr. Прег-матч и так хорошо работает с юникодом, насколько помню. По крайней мере, там вроде как можно указать флаг, что кодировка неоднобайтная.
Никакого хамства - простая логика. Если человек задает такие вопросы как вы, не знает зачем нужен юникод - значит он еще не очень опытный. А поскольку он не очень опытный - его код не может быть оптимальным и компактным.
Так вот и зачем себе сношать мозг думая "буду я использовать ajax или не буду" если можно сразу ставить кодировку юникод и не париться с этим тем более что она по умолчанию поддерживается огромной кучей софта начиная от редактором заканчивая играми. Что заставляет держаться за морально устаревшую кодировку при это создавая самому себе проблему?
Вот кстати Юникод... хорошо ли работают функции strlen, substr, preg_match ??? без НЕДО-костылей и псевдофункций?
Только честно.
Многие (и я в их числе) сталкивался с проблемой работы строковых функций в ПХП, т.к. они расчитаны на однобайтовые кодировки...
У меня никаких абсолютно проблем не возникает. Вот еще одно доказательство недостатка у вас опыта (без обид - придет со временем). Как уже сказал UAS выше, есть мультибайтовые функции для работы со строками. В РНР6 обычные функции будут поддерживать все то же самое. К тому же дело не ограничивается одним только UTF-8. Например, кодировка файловой системы в Windows UTF-16LE.
Просто получается парадокс - с одной стороны вы пытаетесь идти в ногу со временем - верстаете в XHTML, пытаетесь там в ООП разобраться, а с другой стороны категорически не хотите расставаться с доисторической, морально устаревшей и неудобной кодировкой аппелируя только к тому, что текст на страничке будет весить не 3456 байт, а целых 4500.
Просто получается парадокс - с одной стороны вы пытаетесь идти в ногу со временем - верстаете в XHTML, пытаетесь там в ООП разобраться, а с другой стороны категорически не хотите расставаться с доисторической, морально устаревшей и неудобной кодировкой аппелируя только к тому, что текст на страничке будет весить не 3456 байт, а целых 4500.
Просто я использую то, что удобно.
И со старой самопальной 1251 мне (внезапно) работать удобней...
Я попробую, конечно, перейти на утф-8... не знаю что из этого получиться...
Надо потестить в работе с базой, выводом, стрингами...
Единственный очевидный плюс для меня это пока АЯКС...
Единственной причиной того, что вы не понимаете плюсов юникода - это недостаточный опыт. Готов поспорить, что через несколько месяцев после перехода на юникода вы просто не будете понимать как вы раньше работали в 1251 и еще не хотели с нее уходить.
При чем тут вообще аякс? Аякс что ли лучше работает, если в юникоде отправлять? Бред полный)
http://habrahabr.ru/blogs/webdev/17640/
Статья поясняющая что куда и как...
УАСь, кажется ты был поклонником jQuery (могу ошибаться, но кажется ты указывал мне на создание велосипедов с Аяксом).
Фича в том, что чтобы отправить данные АЯКСом в win-1251 нужно сломать себе мозг, или на приёме скриптом делать iconv...
По-этому я и прицепился к АЯКСу...
Edit=>Preferences
Category "New Document"
Default encoding: Юникод(UTF-8)
Я уж по началу испугался - вдруг чего пропустил и с какого перепугу это с win-1251 больше геморроя, чем с ютф8.
Для отправки аякса мозг ломать не надо и можно спокойно отправлять в windows-1251, и принимать их. Вся проблема в том, что просто используете encodeURI() и, скорее всего, json_en/decode (в пхп) - а они как раз работают только с ютф8. Поэтому делать заключение - ютф8 хорош только для аякса - глупо. Просто есть готовые функции и вам впадлу написать свой корректный обработчик win1251-текста на JS.
А теперь вернемся к главной проблеме. Вы сказали, что нафиг ютф8. А теперь смотрите - php6 уже должен быть полностью на ютф8, JS обязывает к использованию ютф8, некоторые современные IDE и языки программирования полностью переходят на utf8 (вспомнить тот же делфи, который недавно перешел, а про яву и дотнет подавно молчу). А вы все топчитесь на месте с мнениями "Нафиг-нафиг utf8, нам достаточно windows-1251".
А то, что всю систему держать на windows-1251, а AJAX слать на utf8 - ну это имхо бред с извращениями. Делайте уже везде utf8.
И всё же, как заставить preg_match() нормально работать с UTF-8???
поиск выдал /([a-z\x80-\xFF]+)/i...
Но я нихрена непонимаю, что там в ХЕКСЕ закодировано... Нет, безусловно, там а-я... Но тем не менее...
Есть не кривые способы? (пока не вышел PHP6)..
//------
Нашел mb_ereg_replace()...
З.ы., как узнать, что у меня данные именно в utf-кодировке???
З.Ы.Ы, помнится, ругали за использование старого eregi_replace, вместо preg_replace,.. какая разница между этими функциями?
И всё же, как заставить preg_match() нормально работать с UTF-8???
поиск выдал /([a-z\x80-\xFF]+)/i...
Но я нихрена непонимаю, что там в ХЕКСЕ закодировано... Нет, безусловно, там а-я... Но тем не менее...
Есть не кривые способы? (пока не вышел PHP6)..
([a-z\x80-\xFF]+)/iu http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
З.ы., как узнать, что у меня данные именно в utf-кодировке???
А зачем это нужно? у тебя возможна как cp1251 так и UTF ?
З.Ы.Ы, помнится, ругали за использование старого eregi_replace, вместо preg_replace,.. какая разница между этими функциями?
http://www.php.net/manual/en/reference.pcre.pattern.posix.php