Well, today an issue came up with the strtolower function. Look at what follows:
$t1 = 'Expérience';
$t2 = strtolower($t1);
echo $t2; // echos 'expience'
See? It drops the two letters “ér”. No matter why and how it processes (for more details about UTF-8/ISO issues, please use google), what matters is that it totally screwed up my beautiful string.
On PHP.net, you can read this function uses the charset defined in the current locale. It means that whatever the encodage of your string is (UTF-8, ISO, …), even if you work with UTF-8 all along (database tables, database connection, page chars …), it will use the current locale charset anyway.
To this, I can see two options.