Edit report at http://bugs.php.net/bug.php?id=54315&edit=1
ID: 54315 Updated by: paj...@php.net Reported by: sms at inbox dot ru Summary: Some string functions doesn't work as expected with cyrillic characters -Status: Open +Status: Feedback Type: Bug Package: Strings related Operating System: Windows 7 PHP Version: 5.3.6 Block user comment: N Private report: N New Comment: ok, that confirms what I was suspecting. What happens is that setlocale is now actually working. As in really set the Locale, per thread, instead of per process (most likely on request or server initializations). It most likely worked because your system local is set correctly. Please try using the correct Locale ID (see the msdn link to get the right one for Russia). Previous Comments: ------------------------------------------------------------------------ [2011-03-19 13:33:11] sms at inbox dot ru In 5.3.5 these functions work as expected even without setlocale(). I tried setlocale() after this problem was found. I use Apache 2.2.17 (downloaded @ http://www.apachelounge.com/download/) and php as a module (php5apache2_2.dll) Just checked CLI - functions work fine ------------------------------------------------------------------------ [2011-03-19 13:04:34] paj...@php.net ru_RU would not work reliably before (or now) as it is not a recognized locale. See the links on the setlocale documentation page for a list of the available locale (and cp). However, the only change in 5.3.6 is that the Locale related APIs are not per thread instead of per process. Making them thread safe and avoid many possible crashes. Which web server and SAPI do you use? Can you try this code using CLI (cmd line) too? ------------------------------------------------------------------------ [2011-03-19 12:58:50] sms at inbox dot ru I had to go back to 5.3.5 where these functions work as expected. 5.3.6 breaks existing and working scripts ------------------------------------------------------------------------ [2011-03-19 12:40:23] paj...@php.net Please see the note about Windows and Locale strings at http://www.php.net/setlocale For a portable and reliable locale support, I would suggest to move to intl, http://www.php.net/intl ------------------------------------------------------------------------ [2011-03-19 12:16:55] sms at inbox dot ru Description: ------------ At least two string functions fail with cyrillic characters (cp1251) as of version 5.3.6: strtolower() and strtoupper(). Test script: --------------- setlocale(LC_ALL, 'ru_RU'); echo 'strtoupper: '.strtoupper('test ÑеÑÑ').'<br>strtolower: '.strtolower('TEST ТÐСТ'); Expected result: ---------------- strtoupper: TEST ТÐСТ strtolower: test ÑеÑÑ Actual result: -------------- strtoupper: TEST ÑеÑÑ strtolower: test ТÐСТ ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=54315&edit=1