ホームページ  >  記事  >  バックエンド開発  >  GBエンコーディングをutf-8に変換する方法

GBエンコーディングをutf-8に変換する方法

WBOY
WBOYオリジナル
2016-06-23 14:22:191114ブラウズ

utf-8 エンコード

getid3 クラス ライブラリを使用して、mp3 ファイルから曲情報を抽出しようとしました。ほとんどの中国語の曲は正常ですが、少数のファイルが文字化けします。

// これは抽出された文字とその Base64 エンコードです
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 の場合、結果は同じです。

ディスカッションへの返信 (解決策)

$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 ファイルから曲情報を抽出します。ほとんどの中国語曲は正常でしたが、少数のファイルが文字化けしていました。

// これは抽出された文字とその Base64 エンコードです

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 の場合、結果は同じです。
変換を行う前に、サーバーが特定のエンコーディングをサポートしている必要があります。サポートされていない場合、プログラムを使用して変換することはできません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。