如何让less工具支持指定编码?解决CP1251文件乱码问题
解决Debian Gnome Terminal下用less查看CP1251文件乱码的问题
遇到这种乱码太头疼了!其实根源很简单:你的Gnome Terminal默认用UTF-8编码,而less会默认把文件当成终端编码来解码,CP1251的字节序列不符合UTF-8规则,自然就显示乱码了。下面给你几种实用的解决办法:
1. 单次临时解决(最直接)
直接在运行less时指定输入文件的编码,用环境变量就行:
LESSCHARSET=cp1251 less your-cp1251-file.txt
如果你的less版本支持--encoding参数,也可以用更直观的写法:
less --encoding=cp1251 your-cp1251-file.txt
这样less会自动把CP1251内容转换成终端的UTF-8编码显示,乱码瞬间消失。
2. 配置专属别名(适合经常看CP1251文件)
要是你频繁需要查看这类文件,可以给shell加个别名,省得每次敲长命令。编辑你的~/.bashrc(如果用zsh就是~/.zshrc),加上一行:
alias less-cp1251='LESSCHARSET=cp1251 less'
保存后运行source ~/.bashrc让设置生效,之后看CP1251文件只需输入:
less-cp1251 your-cp1251-file.txt
平时用普通的less命令还是正常看UTF-8文件,互不干扰。
3. 转码后查看(无需改任何配置)
要是不想动less的设置,也可以先用iconv把CP1251转成UTF-8,再用less打开:
iconv -f cp1251 -t utf-8 your-cp1251-file.txt | less
这个方法适合偶尔查看CP1251文件的场景,不用改任何配置,一次性解决问题。
重要提醒
千万别修改Gnome Terminal的默认编码成CP1251!那样会让原本正常的UTF-8内容(比如系统提示、其他UTF-8文件)全变成乱码,反而更麻烦。让less适配终端的UTF-8编码才是正确的思路~
内容的提问来源于stack exchange,提问作者porton
相关产品推荐
相关产品推荐

