UTF-8 と 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";
結果:
DEBUG1 Le Courrier de Sáint-Hyácinthe
DEBUG2 LE COURRIER DE S?INT-HY?CINTHE
なぜこれが起こっているのか理解できませんか?エンコーディングにはできる限り注意を払っています。文字列は最初に UTF-8 として与えられ、検証され、場合によっては UTF-8 に再変換されます。悪夢です!
アップデート
したがって、これは、コンソールを介して引数を入力したことと、コンソールから戻ってきた引数の組み合わせが原因であることがわかりました。そのため、行きも帰りも文字化けしていました。解決策は、この方法で引数を入力しないか、この方法で引数を取得することです。
この問題の解決にご協力いただきありがとうございます。