分页: 1 / 1

大家来看看~问题很严重

发表于 : 2008-10-10 11:46
cxfmk
这要怎么解决?本来文件名是正常的,在音乐,视频播放器里就变成乱码了。大家帮忙想个办法
图片

Re: 大家来看看~问题很严重

发表于 : 2008-10-10 11:49
pliang75

Re: 大家来看看~问题很严重

发表于 : 2008-10-10 11:55
pliang75

Re: 大家来看看~问题很严重

发表于 : 2008-10-10 11:56
赤之湖
安装python-mutagen,在新立得里找或$ sudo apt-get install python-mutagen

进入音乐所在文件夹
输入命令:
find . -iname "*.mp3" -execdir mid3iconv -e GBK {} \;

必要时加上sudo

如果不会进入音乐所在的文件夹,可以这么做
$ sudo apt-get install nautilus-open-terminal
就可以在在桌面/当前目录打开终端了

还有,这种问题最好先搜索一下,都是很常见的问题

Re: 大家来看看~问题很严重

发表于 : 2008-10-10 12:15
xeoc
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的窗口处在最大化状态,在它的界面里点一下鼠标窗口的标题栏、菜单栏和状态栏就会消失,再点一下就会恢复。不在最大化时就没问题……