utf-8 エンコード
getid3 クラス ライブラリを使用して、mp3 ファイルから曲情報を抽出しようとしました。ほとんどの中国語の曲は正常ですが、少数のファイルが文字化けします。 $s = "w5DDhMOLw4bCv8OxwrPCsQ==";
$s =base64_decode($s);//ÐÄËÆ¿ ñ³± (これは utf-8 でエンコードされています)
echo utf8_decode($s); //ハート ライク (これは gbk エンコードであることに注意してください)
システムは gbk エンコードを認識できないため、それぞれの拡張 ASCII 文字列を形成します文字は ISO-8859-1 から utf-8 にエンコードされています
echo iconv('gbk', 'utf-8', iconv('utf-8', 'latin1' , $s)) と書くこともできます;
2 バイトの utf-8 エンコーディングかどうかも簡単に判断できます
echo (ord($s{0}) & 0xf0) == 0xc0 ? 試してみましたgetid3 クラス ライブラリを使用して、mp3 ファイルから曲情報を抽出します。ほとんどの中国語曲は正常でしたが、少数のファイルが文字化けしていました。
var_dump($str,base64_encode($str))
// string(16) "ÐÄËÆ¿ñ³±"
// string(24) " w5DDhMOLw4bCv8OxwrPCsQ== "
// 文字エンコーディングを検出、結果は CP936
mb_detect_encoding($str, 'GBK, gb2312, GB18030, ISO-8859-1, ASCII, UTF-8', true)
// これを変換してみましたエンコードしましたが、結果はまだ理想的ではありませんでした
mb_convert_encoding($str, 'UTF-8', 'CP936')
// string(24) "????Donkey hat Lu Lu"
CP936 は gbk と互換性があるためと gb2312 の場合、結果は同じです。
変換を行う前に、サーバーが特定のエンコーディングをサポートしている必要があります。サポートされていない場合、プログラムを使用して変換することはできません