当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 新手问题:我用系统自带的音乐播放器导入文件夹的时候,为什么windows中的文件名都是乱
帖子发表于 : 2008-09-17 13:26 

注册: 2008-09-17 13:22
帖子: 5
送出感谢: 0 次
接收感谢: 0 次
我用系统自带的音乐播放器导入文件夹的时候,为什么windows中的文件名都是乱码


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-09-17 13:39 

注册: 2008-01-09 22:41
帖子: 18311
送出感谢: 0 次
接收感谢: 6
编码


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-09-17 13:39 

注册: 2007-05-06 10:12
帖子: 1994
送出感谢: 0 次
接收感谢: 0 次
编码的问题....

代码:
1、文件内容的编码检测及转换





文件内容的编码转换可以结合 2 个工具来完成。



a.如果你不知道你所要转换的文件的编码格式,你可以通过 enca 这个工具来检测编码。举例如下:



>enca foo.txt



Universal transformation format 8 bits; UTF-8



b.如果你事先已经知道了文件的编码或者通过检测知道了文件的编码,可以通过 GNU 的 iconv 来进行编码转换。以下是一个例子用来把文件的编码从 gbk 转换成 UTF-8:



> iconv -f gbk -t utf-8 foo.txt > foot.txt.utf-8



提醒:iconv 的输出默认是直接输出到标准输出(standard output),通常就是你的屏幕上。所以,你需要使用”>”的重定向符号来把输出转存到一个”新”的文件里面去。切不可在”>”后面使用你的原始的输入文件名作为输出文件名,因为”>”操作,会首先将其后面的文件清空,然后再运行 “>”前面的操作。也就是说,除了原始的输入文件被清空之外,你什么也得不到。这是很多 Linux 新用户经常会犯的一个”致命”错误。特此提醒。









2、文件名的编码转换





上述的 2 个工具只能对文件的内容进行编码的检测和转换,如果需要对文件名进行编码转换,则需要 convmv 来完成。convmv 的用法大致和 iconv 相似,以下是一个例子用来将”music”这个目录下的所有以 gbk 编码的文件名的文件和子目录下的文件,转换成以 UTF-8 编码的文件名:



> convmv -f gbk -t utf-8 -notest -r music



请注意这里的”-notest”选项:如果不提供这个选项,该命令只会做一个转换的测试,并不会真正的转换。因为这个命令有一定的”破坏性”,所以,当你用这个程序的时候,最好是先不用”-notest”这个选项来做一遍测试,根据程序运行输出的信息来确定是否有个别的文件需要手动进行调整。







3.关于mp3编码的转换





这里介绍一个工具----Mutagen,假如你安装了Quod Libet,那么这个包已经安装上去了。如果没有,执行下列命令就可以了。



>sudo apt-get install python-mutagen



工具的使用方法



>mid3iconv -e gbk *.mp3 #转换当前目录的mp3文件

>find . -iname "*.mp3" -execdir mid3iconv -e gbk {} \;   #转换当前目录下所有mp3文件(包括子目录)



因为现在在网上下载的mp3绝大多数采用的都是gbk编码,-e gbk 参数是代表把gbk编码的标签转换为Unicode编码,假如mp3标签本身是Unicode编码的就不转换。如果需要转换其他编码的文件可以自行修改gbk参数,比如改为gb18030、big5。转换后为的mp3标签类型为ID3v2 2.4,编码格式为UTF-16。



到了这一步之后,在Linux下使用所有播放器估计都没有什么问题了。



下面我们回过头来看看,追溯一下根源,为什么这些mp3原来在Windows下用Media Player怎么都是显示正常的呢?难道是Linux不如Windows吗?其实这个道理很简单,Firefox同样也打不开很多IE轻松就能打开的页面,能说明Firefox不如IE吗?知情的人一看就明白了。Windows为了它所谓的兼容性,完全无视规范,自定规则,貌似它的软件兼容性很好,其实到头来,毁的还是用户,从众多的不符合W3C规范的网页和现在铺天盖地的mp3标签为gbk/gb18030编码就可见一斑(反正我现在从网上下载的mp3在Linux下就没有看到几个能正常显示的)。



可以告诉大家的是,利用上面的方法转换编码之后,这些mp3在Windows的文件属性菜单和Media Player里都无法正常显示标签,将会全部变为"?"。因为mid3iconv命令在转换编码时默认它会用Unicode编码填满D3v1, ID3v2, APEv2标签(前提是文件本来就含有这些类型的标签),但是 ID3v1 又不支持中文的 Unicode 编码。而Media Player似乎只支持ID3v1的读取,当然你使用其他的支持ID3v2、APEv2类型读取的软件是没有问题的。



这里给大家推荐一个Windows下的mp3播放器---Foobar2000,在以前Windows的生涯中,我一直都是使用的这个播放器,foobar2000支持全系列标签的读取,更值得称赞的是它默认使用ID3v2 2.4类型UTF-8编码的写入,完全解决了编码方面的问题。



给出一个个人提供的最终解决方案。

1.系统环境完全就是Linux。

直接使用下面的这条命令,转换所有mp3文件,完全无视Windows下的使用体验。

mid3iconv -e gbk *.mp3



当然了,如果你为了避免自己的mp3文件共享给Windows或者mp3的用户时,出现煞风景的"?",你可以添加一个--remove-v1这样一个参数来直接删除ID3v1标签,避免了文件属性和Media Player里出现"?"。

mid3iconv -e gbk *.mp3 --remove-v1





2.系统环境为Windows+Linux的双系统

推荐使用foobar2000播放器,对文件进行mp3标签的编辑,可以在foobar2000里选中所有mp3文件,进行文件标签重写,foobar2000会把所有标签进行重写,使标签采用ID3v2 2.4类型UTF-8编码的写入,完全解决Windows和Linux下mp3文件的编码问题。这也是比较完美的解决办法。









看过这篇文章介绍了mp3乱码的原因和解决方法。但作者给的解决方法都是基于命令行工具的,转换个mp3有够麻烦。其实EasyTAG这个软件可以方便的解决这个问题。



首先从添加/删除程序里找到EasyTAG并安装。选择“设置”-“首选项”,在“浏览”页下将“Default directory”选为你放MP3的那个文件夹,然后在“ID3 Tag Settings”中将“写入ID3 v1.x标签”的Charset设置为“简体中文(gb2312)”;在“Charactor set for reading ID3 tags”中选中“None standard“,并同样设置为“简体中文(gb2312)”。(看设置截图)



这样每次打开EasyTag它就会自动扫描默认目录下的所有mp3,退出时只要选择全部保存。再更新一下mp3播放器的播放列表就ok了。



不过在我这里EasyTag有个很奇怪的问题:只要EasyTAG的窗口处在最大化状态,在它的界面里点一下鼠标窗口的标题栏、菜单栏和状态栏就会消失,再点一下就会恢复。不在最大化时就没问题…… 


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-09-17 14:14 
头像

注册: 2007-05-08 16:26
帖子: 2058
地址: 火星内核某分子内某原子核内
系统: arch
送出感谢: 20
接收感谢: 6
用rhythmbox就不会乱码的.


_________________
笔记本 :
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-09-17 14:24 

注册: 2008-01-09 22:41
帖子: 18311
送出感谢: 0 次
接收感谢: 6
sevk 写道:
用rhythmbox就不会乱码的.


肯定会乱……

我把歌曲的信息更改了,rhythmbox不乱了

放到ipod然后连上win的机器

所有问题歌曲都变成了???了…………


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-09-17 16:16 

注册: 2008-09-08 12:26
帖子: 36
送出感谢: 0 次
接收感谢: 0 次
我用audacious一开始也存在这个问题,后来设置成直接显示文件名就可以了。


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-09-17 17:07 
头像

注册: 2008-03-26 14:28
帖子: 385
送出感谢: 0 次
接收感谢: 0 次
用audacious吧,可以认出gb的。不用改编码


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-09-17 21:54 
头像

注册: 2006-05-20 14:03
帖子: 898
送出感谢: 0 次
接收感谢: 0 次
mid3iconv用的是id3v2.4,用mid3iconv改编码的时候最好remove掉id3v1的tag,不然在很多不支持id3v2.4的播放器里会认成?,比如windows media player.

完美支持id3v2.4的播放器好像不多,win和mac下可以用iTunes,linux下推荐banshee(去官网下,别用源里的)


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-09-17 22:44 
头像

注册: 2008-07-14 22:42
帖子: 8078
地址: Beijing
送出感谢: 0 次
接收感谢: 0 次
sevk 写道:
用rhythmbox就不会乱码的.

似乎还是会乱码的。。。可能是你以前整理过了 :cry:


_________________
Ubuntu User


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-09-17 22:47 
头像

注册: 2007-07-11 20:59
帖子: 3922
送出感谢: 0 次
接收感谢: 0 次
建议不要改编码,不然你回windows看的话你的ID3就是乱码



建议换一个播放器,设置为显示为文件名。


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-09-18 15:08 

注册: 2008-09-17 13:22
帖子: 5
送出感谢: 0 次
接收感谢: 0 次
谢谢!!


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-09-18 15:25 

注册: 2008-09-15 10:38
帖子: 94
地址: 福建
送出感谢: 0 次
接收感谢: 0 次
电脑有点乱头脑也开始乱了 :oops:


_________________
菜鸟加新手难免文不对题、语无伦次!见谅
http://hi.baidu.com/%CD%F8%C0%CF%B4%D6


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 12 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译