mb_detect_encoding()でCP1250 を検出する際に問題があります。私の場合、3 つのエンコーディングを検出します。
mb_detect_encoding($string, 'UTF-8,ISO-8859-2,Windows-1250')
しかし、Windows はサポートされているエンコーディングではありません。解決策はありますか?
mb_detect_encoding()でCP1250 を検出する際に問題があります。私の場合、3 つのエンコーディングを検出します。
mb_detect_encoding($string, 'UTF-8,ISO-8859-2,Windows-1250')
しかし、Windows はサポートされているエンコーディングではありません。解決策はありますか?
mb_detect_encoding
常にシングルバイトエンコーディングを「検出」します。これについては、次のドキュメントを参照してmb_detect_order
ください。
mbstring は現在、次のエンコード検出フィルターを実装しています。以下のエンコーディングに無効なバイト シーケンスがある場合、エンコーディングの検出は失敗します。
UTF-8、UTF-7、ASCII、EUC-JP、SJIS、eucJP-win、SJIS-win、JIS、ISO-2022-JP
ISO-8859-X の場合、mbstring は常に ISO-8859-X として検出します。
UTF-16、UTF-32、UCS2、および UCS4 の場合、エンコードの検出は常に失敗します。
結論:
一般に、1 バイトのエンコーディングを正確に検出することは不可能です。PHP でそれを行う必要がある場合は、手動で行う必要があります。非常に良い結果を期待しないでください。
ISO-8859-2 を Windows-1250 と区別したり、その他のシングルバイト エンコーディングをその他のエンコーディングと区別したりすることは現実的ではありません。mb_detect_encoding
指定された文字列に有効な最初のエンコーディングを提供するだけで、どちらも等しく有効です。エンコーディングの「検出」は、定義上、正確に行うことはできません。