GB系编码如何转换utf-8

WBOY
Release: 2016-06-23 14:22:19
Original
1113 people have browsed it

编码 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) "????驴帽鲁卤"

因为CP936和gbk, gb2312相兼容,所以结果都是一样的。

回复讨论(解决方案)

$s = "w5DDhMOLw4bCv8OxwrPCsQ==";
$s = base64_decode($s);//ÐÄËÆ¿ñ³± (这是 utf-8 编码的)
echo utf8_decode($s);//心似狂潮 (注意这是 gbk 编码的)

由于你的那个系统不能识别 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) "????驴帽鲁卤"

因为CP936和gbk, gb2312相兼容,所以结果都是一样的。
这个应该还得要你服务器支持某种编码,你才可以做转换,如果不支持,你无法使用程序转换的

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template