Linux下检测文件编码
最近看冰与火之歌第三季第6集,然后发现XBMC下载的字幕没法正常显示,但是字幕文件用文本编辑器打开是正常的。按照以往经验这通常是编码造成的问题,然后在网上搜,发现file命令可以检测文件编码,执行一下试试:
老的能够正常播放的文件用file获取文件编码:
[lexchou@lex-server Game.Of.Thrones]$ file -bi Game.of.Thrones.S03E05.zh.srt
text/plain; charset=iso-8859-1
再看看第六集:
[lexchou@lex-server Game.Of.Thrones]$ file -bi Game.of.Thrones.S03E06.zh.srt
application/octet-stream; charset=binary
显然这个结果不是我想要的。然后通过研究发现可以利用vim来获取文件编码,毕竟编码是文本编辑器所擅长的事情。
[lexchou@lex-server Game.Of.Thrones]$ alias vimenc='vim -c '\''let $enc = &fileencoding | execute "!echo Encoding: $enc" | q'\'''
[lexchou@lex-server Game.Of.Thrones]$ vimenc Game.of.Thrones.S03E06.zh.srt
Encoding: utf-16
Press ENTER or type command to continue
[lexchou@lex-server Game.Of.Thrones]$ vimenc Game.of.Thrones.S03E05.zh.srt
Encoding: latin1
Press ENTER or type command to continue
好了,这个latin1就不用管了,至少知道第六集真正的编码是utf-16。那么转换成utf8就可以用了:
[lexchou@lex-server Game.Of.Thrones]$ recode utf16..utf8 Game.of.Thrones.S03E06.zh.srt
Last modified on 2013-05-31