#19257 [Bgs]: strtolower & strtoupper does not work for UTF-8 strings

From: Date: Fri, 06 Sep 2002 18:27:37 +0000
Subject: #19257 [Bgs]: strtolower & strtoupper does not work for UTF-8 strings
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-18583@lists.php.net to get a copy of this message
 ID:               19257
 User updated by:  gamid@isayev.net
 Reported By:      gamid@isayev.net
 Status:           Bogus
 Bug Type:         Strings related
 Operating System: Linux
 PHP Version:      4.2.2
 New Comment:

The functions do not work in PHP 4.2.3 and latest snapshot.


Previous Comments:
------------------------------------------------------------------------

[2002-09-05 17:24:20] gamid@isayev.net

> Don't try to patch..you're not doing it right anyway.
:)

> Just pull the snapshot and try with it.
Ok

PHP: 20020307
PHP Extension: 20020429
Zend Extension: 20020903

Output:
loc  = 'UTF-8'
str  = 'Testü'
strU = 'TESTü'
strL = 'testü'

------------------------------------------------------------------------

[2002-09-05 17:09:34] sniper@php.net

Output: 

str  = 'Testü'
strU = 'TESTü'
strL = 'testã¼'

Don't try to patch..you're not doing it right anyway.
Just pull the snapshot and try with it.


------------------------------------------------------------------------

[2002-09-05 17:02:35] gamid@isayev.net

I did backport of strtolower() & strtoupper() from the latest string.c
(rev.1.290). The fuctions still does not work:
loc  = 'UTF-8'
str  = 'Testü'
strU = 'TESTü'
strL = 'testü'


Since I am not sure that you entered the UTF-8 symbols correctly,
here's a modified version of the code that creates the desired test
string:

<?
$str = "Test".utf8_encode("\xFC");

$loc = "UTF-8";
putenv("LANG=$loc");
$loc = setlocale(LC_ALL, $loc);

$strU = strtoupper($str);
$strL = strtolower($str);
?>
<PRE>
loc  = '<? echo $loc;  ?>'
str  = '<? echo $str;  ?>'
strU = '<? echo $strU; ?>'
strL = '<? echo $strL; ?>'
</PRE>

------------------------------------------------------------------------

[2002-09-05 16:02:55] sniper@php.net

Please try using this CVS snapshot:

  http://snaps.php.net/php4-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php4-win32-latest.zip

I can't reproduce this with PHP 4.3.0-dev.


------------------------------------------------------------------------

[2002-09-05 15:46:14] gamid@isayev.net

Functions strtolower() & strtoupper() does not change UTF-8 strings.  I
try Russian (0x042F, 0x044F) and German (0x00DC, 0x00FC) characters.
Example:

<?
$str = "testЯ";

$loc = "UTF-8";
putenv("LANG=$loc");
$loc = setlocale(LC_ALL, $loc);

$strU = strtoupper($str);
$strL = strtolower($str);
?>
<PRE>
loc  = '<? echo $loc;  ?>'
str  = '<? echo $str;  ?>'
strU = '<? echo $strU; ?>'
strL = '<? echo $strL; ?>'
</PRE>


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=19257&edit=1



Thread (18 messages)

« previous php.bugs (#18583) next »