mb_check_encoding() は UTF-16(BOM 付き Little Endian) を正しく検証できない
確認した PHP のバージョンは PHP 5.2.9 です。
<?php // テスト(UTF-16: BOM 付き Little Endian の文字列) $str = "\xFF\xFE\xC6\x30\xB9\x30\xC8\x30"; var_dump( mb_check_encoding( $str, "UTF-16" ) );
結果は以下の通りです。
bool(false)
以下の通り、BOM 付き Big Endian の文字列では問題ありません。
<?php // テスト(UTF-16: BOM 付き Big Endian の文字列) $str = "\xFE\xFF\x30\xC6\x30\xB9\x30\xC8"; var_dump( mb_check_encoding( $str, "UTF-16" ) );
bool(true)