GB系编码如何转换utf-8
我尝试用getid3类库从mp3文件中提取歌曲信息,大多数中文歌曲都正常,但少部分文件有乱码的情况。
// 这是提取出来的字符,及它的base64编码
var_dump($str, base64_encode($str));
// string(16) "D?????3±"
// 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) "脨脛脣脝驴帽鲁卤"
因为CP936和gbk, gb2312相兼容,所以结果都是一样的。 编码 utf-8
[解决办法]
你也可以写作
echo iconv('gbk', 'utf-8', iconv('utf-8', 'latin1', $s));
判断是否为2字节的utf-8编码也很容易
echo (ord($s{0}) & 0xf0) == 0xc0 ? '是' : '不是';
[解决办法]