Ich habe ein Problem mit UTF-8 und mb_strtoupper.PHP: mb_strtoupper funktioniert nicht
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";
Ergebnis:
DEBUG1 Le Courrier de Sáint-Hyácinthe
DEBUG2 LE COURRIER DE S?INT-HY?CINTHE
Ich verstehe nicht, warum dies geschieht? Ich versuche so vorsichtig wie möglich mit der Codierung umzugehen. Die Zeichenfolge wird zuerst als UTF-8 angegeben, überprüft und möglicherweise in UTF-8 konvertiert. Es ist ein Albtraum!
UPDATE
Also habe ich herausgefunden, dass dies durch eine Kombination meiner Eingabe der Argumente über die Konsole und die Argumente des Rückwegs aus der Konsole verursacht wurde. So waren sie sowohl auf dem Hinweg als auch auf dem Hinweg verstümmelt. Die Lösung besteht darin, keines der Argumente auf diese Weise einzugeben oder die Argumente auf diese Weise zu erhalten.
Vielen Dank für Ihre Hilfe bei der Lösung dieses Problems!
Es ist an der Konsole hallte zu werden, aber es in der Konsole offensichtlich tut Anzeige, weil die Bindestriche in debug1 sind. – Alasdair
Wie lautet die Codierung Ihrer .php-Datei? Versuchen Sie, es in utf-8 ohne BOM zu konvertieren. – Hast
... mh, versuche setlocale hinzuzufügen (LC_ALL, 'en_US.UTF-8'); an der Spitze – Federkun