关于MP3的Tag乱码问题
现在几乎每个版本中都提过音乐播放器中歌曲显示乱码的问题,现在归纳一下主要有两个现象:
1:当前语言为英文时,歌曲信息显示乱码
2:中文状态下,歌曲信息显示乱码
第一种情况出现的原因是因为在英文模式下,MediaScannerClient::setLocale函数没有对“en”设置相应的编码格式,所以中文会出现乱码。
修改方法如下:
else if(!strncmp(locale,"en",2)) mLocaleEncoding = kEncodingGBK;
第二种情况比较复杂,我们分析源码:
for(int i = 0; i < mNames->size(); i++)
encoding& = possibleEncodings(mValues->getEntry(i));
上面的代码是先对所有的Tag进行编码检测,然后进行&操作。
if(encoding & mLocaleEncoding)
convertValues(mLocaleEncoding);
然后检测是否存在有与当前编码方式匹配的,如果有则进行转换,到这里我们是否可以假设一种情况:
如果某个Tag不需要进行转换,另外一个Tag中含有当前的编码方式,于是所有的tag都将通过convertValues函数进行转换,然后乱码现象出现了。这个问题是常见的,我们会发现有些歌曲它的名字是正常的,但是艺术家信息却是乱码,这就是造成这种现象的原因。
于是我们有了以下的处理方法:对单个Tag进行检测转换。
for(int i = 0; i < mNames->size(); i++) {
encoding& = possibleEncodings(mValues->getEntry(i));
if(encoding & mLocaleEncoding)
convertValues(mLocaleEncoding,i);
}
我们只需要对需要转换的Tag进行处理,不需要的就不处理。
以上只是我的个人想法,有不对的地方还请指出来,大家有好的方法也可以交流下。
关于MP3的Tag乱码问题相关推荐
- linux mp3 乱码,Linux下MP3的TAG乱码问题解决方法
复制代码 代码如下: sudo apt-get install python-mutagen 然后使用mid3iconv工具 Usage: mid3iconv [OPTION] [FILE]... M ...
- Mp3tag中文设置方法(解决mp3歌曲名乱码,出现问号的问题)
解决Mp3tag中文设置方法(解决mp3歌曲名乱码,出现??问题) Mp3tag(mp3标签修改器)软件是MP3文件ID3-Tag信息修改器.所谓ID3-Tag 信息,就是在MP3文件中加入曲名.演唱 ...
- Android 播放mp3 tag乱码分析之java 篇
在Java程序中的字符,不管是中文的还是英文的,都是占用二个字节,这个结论我们大家都烂熟于心了,但是纠结是为什么呢? 其实是因为 char 类型 就好比双字节 的无符号整数 . UTF ...
- Android 播放mp3 tag乱码分析之jni 篇
Android media 扫描mp3文件这个重任是cpp来完成的.但是tag解析工作是上层java完成的. 乱码问题的根源是: java内部是使用16bit的unicode编码(UTF-16)来 ...
- ubuntu 13.10 Rhythmbox不能播放mp3 和中文乱码的问题
1.ubuntu 13.10 Rhythmbox不能播放mp3的解决方法 软件中心搜索(ubuntu额外的版权受限软件)不带括号 2.中文乱码问题解决方法: 终端顺序操作 : 1. sudo ged ...
- Linux下mp3文件的乱码问题
虽然现在很多时候都在linux下,但还是挺舍不得windows的,原因两个:千千静听和QQ空间.QQ空间不进也罢,但是音乐一定少不了. 我的linux有两个音频播放器:Amarok和Kaffei ...
- 解决《空中英语教室》Super MP3光盘繁体字乱码的方法
非常喜欢<空中英语教室>这个英语教学节目,但是它的Super MP3光盘没有简体版,繁体版运行在简体Windows系统是乱码.以前有人介绍过一些解决方案: 1,用Microsoft的App ...
- 计算机读光盘出现乱码,解决刻录音乐光盘mp3出现中文乱码的方法
图片: 图片: 图片: 图片: 图片: 1.目前,很多人自己刻录音乐光盘以便在车载播放器里播放,但往往刻录出来的CD光盘会显示乱码,导致播放出来的音乐看不到是什么歌名和哪个歌手唱的.用nero等刻录音 ...
- 任天堂计划在2021年升级交换机控制台和主要游戏
By Takashi Mochizuki 高木望月 Nintendo Co. plans to debut an upgraded model of its Switch console next y ...
最新文章
- 设计模式——控制反转依赖注入
- 对用户输入内容进行字数提示功能
- Docker 常用命令整合!!!带你一起理解和复习每个操作命令!!!带操作图,不会也能看懂的!!
- Hadoop(一)之初识大数据与Hadoop
- 收集网络状态(Ping),并用邮件通知管理员
- Sublime Text 3 import Anaconda 无法正常补全模块名解决办法
- C# 类和结构的成员
- 在Excel中用VBA制作俄罗斯方块游戏
- 学习C++程序设计需要什么基础
- 让Fireball CodeEditor控件支持中文
- 怎么重置imac_如何重置Mac Pro?四种重置Macbook Pro的方法
- 超级爆笑小学生作文大全,这孩子太搞了
- Spring boot 事物管理
- jQuery 从零开始学习 (二) 选择器
- NanoPi-K2 控制GPIO
- jstree 使用API
- xhr请求status是failed的解决办法
- Charles 配置 https
- 2022苹果春季发布会带来新款iPhoneSE价格预计2500左右
- 383计算机毕业设计
热门文章
- 【Qt】Scene中获取指定类型的自定义图元
- 永久性重定向临时性重定向
- vue+vant2—篇3—定制主题色
- MFC树控件的属性和初始化(基于对话框的编程)
- 如何让你的文案“一箭穿心”?
- Node.js 在命令行下执行Console.log()命令时,第二行会打印undefined的原因
- Martin Thompson:协议设计与实现
- 比大龄单身更可怕的是大龄测试,35的测试是失业or转行?
- me shy是什么歌 抖音make_原来这才是抖音上火爆的5首英文歌的原版?!
- 22-05-19 西安 javaweb(04) xml、DOM4J,Xpath、 tomcat应用服务器、HTTP协议