1

文字列のエンコーディングを検出できるようにする必要がありますが、mb_detect_encoding が機能していません。

ファイル ( ) から文字列を取得しfile_get_contentsましたが、問題を引き起こしたファイルが UTF-16 LE であることがわかりました。ただし、ドキュメントから、このエンコーディングの検出は不可能であることがわかります( mb_detect_order :「UTF-16、UTF-32、UCS2、および UCS4 の場合、エンコーディングの検出は常に失敗します。」)。

PHPで信頼できる方法で文字列のエンコーディングを取得するにはどうすればよいですか? 可能なエンコーディングはありますか?

これを解決しようとして数時間を失いましたが、適切なリソースが見つかりませんでした。これを自動化できるようにしたいので、ファイルのエンコーディングが変更された場合、プログラムがそれを処理できるようになります (別の Web サイトからファイルを取得しています)。


これを試してみましたが成功しませんでした.UTF-8が表示されます:

mb_detect_encoding($proper_string, 'UTF-16LE,UCS-2,UTF-8,ASCII', true)

私もこれを試しました:

echo 'mb_check_encoding($fileContents, \'UTF-8\'): ' . mb_check_encoding($fileContents, 'UTF-8') . "\n";
//true
echo 'mb_check_encoding($fileContents, \'UTF-16\'): ' . mb_check_encoding($fileContents, 'UTF-16') . "\n";
//true
echo 'mb_check_encoding($fileContents, \'UTF-16LE\'): ' . mb_check_encoding($fileContents, 'UTF-16LE') . "\n";
//true
echo 'mb_check_encoding($fileContents, \'UCS-2\'): ' . mb_check_encoding($fileContents, 'UCS-2') . "\n";
//true
echo 'mb_check_encoding($fileContents, \'ISO-8859-1\'): ' . mb_check_encoding($fileContents, 'ISO-8859-1') . "\n";
//true
4

0 に答える 0