
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
|||||||||||||||||||
![]() Жадный квантификатор ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 6158 Пользователь №: 4795 На форуме: Карма: 120 ![]() |
Проблема заключается в следующем. Имеем файл с содержанием
На выходе получаем тоже что и на входе. locale -a выдает
- выдает ru_RU.UTF-8, что говорит о том что локаль установленна корректно. При этом даты через strftime выводятся на нормальном русском языке.
- работает на "ура", вот только у меня уже везде используются обычные строковые функции. На форуме нашел похожую тему, но последний вариант мне не подходит потому как в дальнейшем на сайте будет еще немецкий и польский языки. Если кто сталкивался с подобной несправедливостью по отношению к русскому языку, буду рад узнать вариант решения данной траблы! ![]() Спустя 21 минута, 52 секунды (4.02.2009 - 00:59) twin написал(а): Я сталкивался, так пока и не решил. Сделал выбор языка и несколько файлов с заменами и разными локалями. С многобайтной кодировкой вечно проблемы. Спустя 5 минут, 4 секунды (4.02.2009 - 01:04) kirik написал(а): twin, пока единственный рабочий вариант - использование mbstring модуля:
Спустя 34 минуты, 9 секунд (4.02.2009 - 01:38) twin написал(а): Я не поминю щас точно, но это был первый вариант и почему то не пошел... Завтра на свежую голову мож вспомню почему. Спустя 9 часов, 35 минут, 46 секунд (4.02.2009 - 11:14) vasa_c написал(а):
Ну, собственно, это единственно правильный вариант для UTF. Чем он не нравится? MBString так же можно настроить, чтобы стандартные функции типа strtolower работали, как mb_* Спустя 12 минут, 42 секунды (4.02.2009 - 11:27) twin написал(а): Что то, если не изменяет память, у меня не клеилось с подсчетом символов с mb... Хотя может это была локальная проблема. Вообще то конечно, для того этот модуль и писан, чтобы с многобайтными работать. Спустя 9 минут, 54 секунды (4.02.2009 - 11:37) kirik написал(а):
Просто изначально использовал в движке обычные строковые функции, не думал что будет такая проблема. Сейчас все заменил на mb_, проблем нет! ![]()
Спасибо за информацию! Только что почитал про перегрузку однобайтовых функций.. Зря сидел заменял все на mb_* ![]() Спустя 6 дней, 23 часа, 5 минут, 15 секунд (11.02.2009 - 10:42) kirik написал(а): Итак в продолжении темы напишу немного про дружбу регулярок и русских букв в utf8. Написал я форум, сделал все красиво, в юникоде ![]() ![]() ![]() Первое что мне пришло в голову, - заглянуть на родной php.net. Там я прочитал, что mb_internal_encoding('UTF-8'); выставляется для текстовых функций. Надо сказать, что все обычные строковые функции я перезагрузил [по совету vasa_c] с помощью строчки php_value mbstring.func_overload "7" в .htaccess-е (Что значит 7-ка, можно прочитать тут). Но как оказалось мало установить кодировку символов, нужно установить кодировку самих регулярных выражений с помощью mb_regex_encoding('UTF-8');. Все бы хорошо, но вот отказывалась eregi_replace() работать регистронезависимо. И с модификаторами и без - никак. Я уже подумывал на это дело забить, но что-то меня потянуло к гуглу опять. И нарыл я инфу, что PCRE и без всяких перезагрузок работают с НЕлатиницей! Нужно всего-навсего добавить модификатор u. Тоесть регулярка получится примерно такой -
Может кому пригодится сей рассказ ![]() Надеюсь моя эпопея с русскими буквами на этом закончится ![]() Спустя 4 часа, 22 минуты, 45 секунд (11.02.2009 - 15:05) Sylex написал(а): kirik тоже когда-то сталкивался с подобным ![]() |
||||||||||||||||||
![]() |
![]() ![]() ![]() |