网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月13日漏签0天
aimp吧 关注:4,788贴子:19,035
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 6回复贴,共1页
<<返回aimp吧
>0< 加载中...

【转载】歌曲名乱码和ID3标签

  • 取消只看楼主
  • 收藏

  • 回复
  • 朱0621
  • 意见领袖
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
一直有用户反应在使用的过程中,遇到播放列表里面歌曲名显示乱码,包括PC版和安卓版
这是与MP3标签编码有关的,在网上搜索一下能找到很多相关资料,这里简单介绍一下ID3标签。


  • 朱0621
  • 意见领袖
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1. ID3标签的起源和发展
ID3v1.1:
起初,由于MP3格式标准里并没有特别定义保存曲目相关信息的结构,音乐播放器无法获取到MP3文件歌曲的任何信息,大家很受折磨。后来,有人(Eric Kemp)在1996年提出了一种解决办法,即在MP3文件末尾添加128字节额外的数据空间来保存曲名、演唱者、专辑名、年份、曲目类型和备注信息。不久,Michael Mutschler 扩展了这种方案(加入在原始CD中的音轨号),并命名为ID3,并把他的改动版本命名为ID3 v1.1。
大家为ID3v1.1而欢欣雀跃不久后,又有新的问题产生了。某些音乐文件的标签文本太长,ID3 v1.1限定的30个字节不能容纳,把标签文本给截断了。的确,ID3v1、ID3v1.1有明显缺陷,字段名和字段长度都是固定死的,不可扩展,缺乏灵活性。因此,又有人提出新的ID3v2格式,试图解决这些问题,扩展ID3的功能。


2025-08-13 06:43:02
广告
不感兴趣
开通SVIP免广告
  • 朱0621
  • 意见领袖
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
ID3v2:
虽然从名称上ID3v2好像只是ID3v1的一个升级,实际在格式定义上ID3v2和ID3v1完全不同,ID3v2应该算一个全新的标签tag系统。ID3v2最大的改进应该是极大的增强了灵活性和可括展性。不仅每个字段的长度是可扩展的(再也不必为ID3v1 30个字符的限制而烦恼了),而且用户还可以很容易的添加自定义字段。
ID3v2 tag 支持 Unicode,可以包含歌词(包括同步信息),曲目的volume、balance、equalizer、reverb设置信息,甚至可以插入图片,支持链接外部信息和网页等等很多……
看上去ID3v2功能强大,真是不错,不过凡事都有两面性,ID3v2繁多的功能也带来一个负面问题,就是使得ID3v2太过复杂,实现起来比较困难。
还有一点值得注意的,ID3v2不像ID3v1存储在文件末尾,而是插入到音频文件的最开头。原本的初衷是考虑网络上播放文件时可以先接收到相应tag信息。实际应用时却发现这么处理是弊大于利。兼容性变差、写入tag速度慢、耗费临时空间等。最新的ID3v2.4标准已经可以选择把tag存放在文件末尾。
ID3v2现在主要有ID3v2.3和ID3v2.4,二者的编码字符集不同。


  • 朱0621
  • 意见领袖
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
2. APEv1 和 APEv2标签
APE也是一种tag格式,在APEv1基础上改进又有了APEv2。APE tag具有与ID3v2一样的灵活性和可括展性,字段名可自定义,字段长度可扩展,同时格式定义又不像ID3v2那么繁琐。APE tag的格式很简单,实现起来也很方便,tag存放位置是可选的,既可以在文件头也可以在文件尾(推荐在文件尾),所以有不少人对APEv2比较青睐。


  • 朱0621
  • 意见领袖
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
3. 乱码的成因
乱码的原因主要是标签中文本所用的编码和显示时的编码不同导致。各种标签格式分别支持的编码为:
ID3v1:只支持ISO-8859-1
ID3v2 2.3:ISO-8859-1、UTF-16
ID3v2 2.4:ISO-8859-1、UTF-16、UTF-8
APEv2:UTF-8
一般的MP3播放器都是完全按照ID3的标准编码来读取标签内容的(例如所有的Linux/FreeBSD系统依赖libid3tag库)。从上面的编码可以看出,不论mp3是采取何种的标准的标签(ID3v1、ID3v2、APEv2),只要mp3的标签的内容是Unicode编码存储的,那么显示肯定是正常的(ID3v1的ISO-8859-1严格说是不支持中文,但是并不是代表它不能存储中文)。如果遇到是以GBK、GB18030、BIG5等编码的中文内容时,播放器还是会把它当成ISO-8859-1来读取,乱码就成了必然。
ID3v1中保存的字符串多采用ANSI编码。因此根据系统语言的不同所使用的编码是不同的。如果是简体中文系统使用的是GB2312,繁体中文就是BIG5,日文操作系统下面又是JIS编码。所以,如果MP3中仅有ID3v1的信息,那在不同语言的操作系统中的播放器里面显示的信息会是乱码。
ID3v2-3保存在MP3文件的开头。有标签头和若干标签帧。参考ID3v2-3的标准,在文本标签帧中,在代表帧size的字节后面可以跟一个字节来说明这个帧是使用ISO-8859-1编码还是使用Unicode编码的。如果是使用ISO-8859-1则这个字节为0,如果是使用Unicode则这个字节为1. 使用Unicode Bom ( 0xFF 0xFE ) 开头和两个0 ( 0x00 0x00 )作为结尾。
所以如果要保存中文信息,最好使用ID3v2-3保存Unicode字符串。这样MP3在各个系统下面播放就不会出现乱码的问题了。


  • 朱0621
  • 意见领袖
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
4. 乱码的解决方案
我们只需要把MP3标签里面用GBK、GB18030、BIG5等编码存储的中文内容修改为Unicode编码,那么基本上所有播放器都能正常识别MP3标签了。考虑到ID3v1从原理上对中文支持就不好,而且标签长度太短,一般应使用ID3v2标签来显示中文信息(支持ID3v2.3的播放器最多)。同时可能需要考虑本地设定的是UTF-8还是UTF-16,一般更改为UTF-16即可;如果使用UTF-8,可以把MP3标签转换为ID3v2.4。
=========
以上转载都是讲解原理,下面才是结合AIMP使用的重点:
在Windows版中,可以直接使用AIMP自带的标签编辑器修改标签,或者使用第三方标签编辑工具(如mp3tag)来修改标签;
对于使用CUE的整轨文件,如果遇到乱码现象(使用默认标签编辑后出现乱码),需要将CUE文件的编码格式转换为UTF-8-BOM;
同样,外挂的.lrc歌词文件乱码问题,一样将歌词文件的编码格式转换为UTF-8-BOM.
在Android版中,可在设置 - 播放列表 - ANSI标签默认编码里将windows1251更改为GBK,然后下拉刷新播放列表即可。


  • 朱0621
  • 意见领袖
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
乱码的解决方案(补充)
在[2080]版本中,已修复使用 UTF-8 编码的歌词文件或CUE文件在播放器中的显示乱码问题


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回aimp吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示