Ho un problema con UTF-8 e mb_strtoupper.PHP: mb_strtoupper non funziona
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";
Risultato:
DEBUG1 Le Courrier de Sáint-Hyácinthe
DEBUG2 LE COURRIER DE S?INT-HY?CINTHE
Non capisco perché questo sta accadendo? Sto cercando di essere il più attento possibile con la codifica. La stringa viene data prima come UTF-8, verificata e possibile riconvertita in UTF-8. È un incubo!
UPDATE
Così ho capito che questo è stato causato da una combinazione di mia entrare gli argomenti tramite la console e gli argomenti a tornare dalla console. Quindi sono stati confusi sia nel modo in cui e la via d'uscita. La soluzione è non inserire nessuno degli argomenti in questo modo, o ottenere gli argomenti in questo modo.
Grazie a tutti per il vostro aiuto nella risoluzione di questo problema!
E 'in corso di eco alla console, ma lo fa, ovviamente, visualizzazione nella console perché i trattini sono lì in DEBUG1. – Alasdair
Qual è la codifica del tuo file .php? Prova a convertirlo in utf-8 senza BOM. – Hast
... mh, prova ad aggiungere setlocale (LC_ALL, 'en_US.UTF-8'); in cima – Federkun