現在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裡寫。。),~狼裡個狼~