私は現在、UTF-8文字列からすべての特殊文字とアクセント記号を可能な限りASCII文字に変換しようとしています。PHPのiconvがsetlocaleを必要とするのはなぜですか?
だから私は単純にこのコードを使用しています:
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
問題は、例えば単語「デビュー」の代わりに「デビュー」の「dbut」に変わるということです。 それを動作させるために、私はこのような、のsetlocaleの呼び出しを追加する必要があります。
setlocale(LC_ALL, 'en_US.UTF8');
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
そして私はなぜ理解していません。 UTF-8とASCIIは、あなたが使っているロケールであれ常に同じものだと思っていました。
編集:私はコードである(私は常にUTF-8に等しく、ASCIIは常にASCIIと重複するUTF-8のサブセットをASCII
ASCIIとUTF-8は同じものです。 UTF-8は桁違いに大きくなります。 – NikiC