现在linux下有越来越多的优秀的播放软件,xmms,m-player,beep-media-player,totme,rhythmbox,等等等等,但是这些播放软件都不能很好的解决mp3文件中文信息乱码的问题。
究其原因,现在网上绝大多数(99%以上)的mp3都是网友在windows下压制的,文字信息编码方式自然是GBK,到了linux下面就没有lftp那么幸运都可以设置显示编码方式了,
网上google过好多次,都没有完美的解决方案。今天整理系统的时候突然想到能否通过改变系统环境编码方式来实现对beep-media-player这一类软件的强制更改编码呢?说干就干。。
sudo vi /etc/environment
把所有的zh_CN.UTF-8改成zh_CN.GBK,重启。。。
打开beep-media-player,bingo!!!居然如我想象得一样,,所有歌曲信息都能正常显示了!
但是由于环境变成了GBK,导致terminal中原本UTF-8的文件名无法正常显示了。。这个会影响到工作。。也不是办法。。怎么办好呢?
咦,在bash shell下export一个的变量不是仅对当前终端有效嘛?当终端重启或者开启另外一个终端时候,export即失效。那我就可以先把LC_CTYPE跟LANG改export成zh_CN.GBK,启动播放器之后再export回来zh_CN.UTF-8,这样连当前终端工作都不会影响到。太棒了!
再偷懒一下,把这些步骤通通写成一个bash shell,
export LC_CTYPE=zh_CN.GBK
export LANG=zh_CN.GBK
/usr/bin/beep-media-player & //这里一定不要漏掉“&”符,让播放器后台运行。不然会占用掉当前命令行,从而影响到下面两行的执行。
export LC_CTYPE=zh_CN.UTF-8
export LANG=zh_CN.UTF-8
保存成mp3.sh
chmod 777 mp3.sh
./mp3.sh
启动起beep-media-player,哈哈,显示正确!
再用env查看一下当前环境变量。。完全没有问题。
之后发现这种方法虽然贱。。但是还真挺有效的,可以欺骗任何不能设置程序运行编码方式的软件(或者有些软件支持,但是你不知道如何在conf里写。。),~狼里个狼~