Strtolower и кирилица

Статус
В этой теме нельзя размещать новые ответы.
спасибо Активист.

что такое вокер?

может это мне поможет понять почему после рестарта апачи+пхп mb_strtolower($caps[0]) всеравно возращает мустор. хотя до первой "игры" с локале оно возращало текст "Новости" пусть не лоуркейс но и не мусор
http://ru2.php.net/setlocale

Warning

The locale information is maintained per process, not per thread. If you are running PHP on a multithreaded server API like IIS or Apache on Windows, you may experience sudden changes in locale settings while a script is running, though the script itself never called setlocale(). This happens due to other scripts running in different threads of the same process at the same time, changing the process-wide locale using setlocale().
 
Информация о локали модифицируется во всем процессе, а не по каждому потоку отдельно. Если вы используете PHP на многопоточном сервере, таком как IIS или Apache под Windows, вы можете обнаружить неожиданные изменения в настройках локали во время выполнения скриптов, никогда и не вызывавших setlocale(). Это происходит из-за того, что другие скрипты, запущенные в параллельных потоках данного процесса, в то же самое время поменяли настройки локали для всего процесса с помощью setlocale().
ну после этого объяснения немного становится понятно. но тут упоминается про "запущенные в параллельных потоках данного процесса, в то же самое время " я же удалял сетлокале и спустя минуту открывал а не в тоже самое время. и это НЕ совсем понятно. интересно тогда когда это "тоже самое время" истекает ?

НО в любом случае это не объясняет то что было до и то что стало после, а имено

до того как попробовал сетлокале:
mb_strtolower($caps[0]) (БЕЗ ВТОРОГО параметра) возращал "Новости"

после как попробовал сетлокале и удалил её И перегрузил апачи+пхп
mb_strtolower($caps[0]) (БЕЗ ВТОРОГО параметра) возращает Мусор

гуру пхп, как такое могло произойти ?
 
Мало того, что юникод в php работает через одно место, так еще и для некоторых строковых функций нет аналогов в mb_. Например, тот же ucfirst, strrev и т.д. При этом разработчики языка ломают совместимость с существующими движками в однобайтных кодировках. Я впервые начинаю задумываться о смене языка.
 
ой, ну если так надо всякие mb_ucfirst, пишешь 1 раз

class StringTools {

static public function ucfirst($string) {
return mb_strtoupper(mb_substr($string, 0, 1)) . mb_substr($string, 1);
}
...
итд
...
}

и таскаешь с собой.

По секрету скажу, что с юникодом так или иначе задница везде, кроме JVM-based языков :)
 
ой, ну если так надо всякие mb_ucfirst, пишешь 1 раз

class StringTools {

static public function ucfirst($string) {
return mb_strtoupper(mb_substr($string, 0, 1)) . mb_substr($string, 1);
}
...
итд
...
}

и таскаешь с собой.

По секрету скажу, что с юникодом так или иначе задница везде, кроме JVM-based языков :)

Я отдельный класс давно написал для этой цели, все функции завязаны на регулярках с u-модификатором. Но нормальных штатных средств для работы с юникодом в языке нет, и даже "официального" костыля тоже нет.
 
Я, кстати, наврал, в python 3 с юникодом все весьма хорошо. Вот только многие либы-фреймворки до сих пор на двойке.
В руби костыли, хотя в 1.9, конечно, лучше чем раньше.
 
fixxxer
Вот только многие либы-фреймворки до сих пор на двойке.
Я бы даже сказал почти все) переход что-то очень затянулся. Ну кстати во втором тоже норм с юникодом, если использовать модификаторы и вначале файла явно указывать ее.
 
fixxxer

Я бы даже сказал почти все) переход что-то очень затянулся. Ну кстати во втором тоже норм с юникодом, если использовать модификаторы и вначале файла явно указывать ее.

...и если исходить из наивного предположения, что все используемые библиотеки unicode-safe. :)
 
самый косяк в php, в том что utf8 c bom заголовком определяется как ВЫВЫД в буфер и не режется на уровне интерпритатора, дурдом.
 
Сколько школьников и нервных на форуме развелось, ппц просто.
 
Любой нормальный текстовый редактор или ide это умеет.
Я посмотрю на тебя, когда ты откроешь какой-либо текствой файл, отредактируешь его, а потом удивишься, что не латинские символы выпилены в /dev/null
 
Откуда все эти юные неадекваты повылазили?

Сколько школьников и нервных на форуме развелось, ппц просто.
Ты про себя говоришь?

Я посмотрю на тебя, когда ты откроешь какой-либо текствой файл, отредактируешь его, а потом удивишься, что не латинские символы выпилены в /dev/null
Ты вообще понимаешь, для чего нужен bom? Если нет - бегом в гугл.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху