Hey folks!
I'm no noobie, but got a problem here that' is driving me nuts...
my enviromment:
* php 5.2.10
* apache 2.2
* OS Windows Vista
* RewriteEngine On
* DefaultCharset UTF-8
When requesting any page and parsing values thru $_GET, all works fine, apart when parsing "french strings" (e.g. Chloé / Chlo%E9 , becomes: Chlo , OR Élle ,becomes: lle )
So I have:
page.php
<?php
header("Content-type: text/html; charset=ISO-8859-1");
print("string(".strlen($_GET['var']) .") ".$_GET['var'] ."\n");
print(urldecode($_SERVER['REQUEST_URI']));
?>
request : page.php?var=ABC%25DE
expected:
string(6) ABC%DE
page.php?var=ABC%25DE
output :
string(6) ABC%DE
page.php?var=ABC%25DE
------------------------------------------------------
request : page.php?var=ABC%DE
expected:
string(6) ABC%DE
page.php?var=ABC%DE
output :
string(6) ABC%DE
page.php?var=ABC%DE
------------------------------------------------------
request : page.php?var=ABCDÉF
expected:
string(6) ABCDÉF
page.php?var=ABCDÉF
output :
string(5) ABCDF
page.php?var=ABCDÉF
------------------------------------------------------
request : page.php?var=ABCD%E9F
expected:
string(6) ABCDÉF
page.php?var=ABCD%E9F
output :
string(5) ABCDF
page.php?var=ABCD%E9F
------------------------------------------------------
So, the "É" (and its urlencode equivalent %E9) were simply ignored by PHP.
Got the same results for the code
<?php
header("Content-type: text/html; charset=ISO-8859-1");
print("string(".mb_strlen(utf8_encode($_GET['var'])) .") ".$_GET['var'] ."\n");
print(urldecode($_SERVER['REQUEST_URI']));
?>
Anyone please???