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

Reply via email to