PHP: mb_strtoupper ne fonctionne pas

J'ai un problème avec l'encodage UTF-8 et mb_strtoupper.

mb_internal_encoding('UTF-8');
$guesstitlestring='Le Courrier de Sáint-Hyácinthe';

$encoding=mb_detect_encoding($guesstitlestring);
if ($encoding!=='UTF-8') $guesstitlestring=mb_convert_encoding($guesstitlestring,'UTF-8',$encoding);

echo "DEBUG1 $guesstitlestring\n";
$guesstitlestring=mb_strtoupper($guesstitlestring);
echo "DEBUG2 $guesstitlestring\n";

Résultat:

DEBUG1 Le Courrier de Sáint-Hyácinthe
DEBUG2 LE COURRIER DE S?INT-HY?CINTHE

Je ne comprends pas pourquoi ce qui se passe? Je vais essayer d'être aussi prudents que je peux avec l'encodage. La chaîne est donnée d'abord en tant que UTF-8, vérifié et possible reconverti en UTF-8. C'est un cauchemar!

Mise à JOUR

Donc j'ai pensé que cela a été causé par une combinaison de mon entrer dans les arguments via la console et les arguments de retour de la console. Donc, ils ont été tronquées à la fois sur la manière et le moyen de sortir. La solution est de ne pas entrer dans un des arguments de cette façon, ou d'obtenir les arguments de cette façon.

Merci à vous tous pour votre aide dans la résolution de ce problème!

Il fait écho à la console, mais il est évident qu'elle ne s'affiche pas dans la console, parce que les traits d'union sont là dans DEBUG1.
Quel est l'encodage de votre .fichier php? Essayez de le convertir en utf-8 sans BOM.
... mh, essayez d'ajouter la fonction setlocale(LC_ALL, 'fr_fr.UTF-8'); au sommet
J'ai essayé de la sortie vers un fichier et de téléchargement du fichier, et son le même. @As, c'est exactement ça.
merci mais il n'a pas aidé.

OriginalL'auteur Alasdair | 2013-02-24