日志文件用 tail, head, nano 都正常,唯独用 vim 出现乱码,但早上看的时候 vim 也是正常的,晚上再看又乱码

2016-01-04 01:50:05 +08:00
 fuxkcsdn
CentOS release 6.6 (Final) 2.6.32-504.16.2.el6.x86_64
vim 7.2.411

日志文件里有中文,之前都是正常的,前几天发现用 vim 看会有乱码,但用 cat 、 head 、 tail 、 nano 等命令看又都是正常的

下载日志文件到另一台电脑上(Debian 7.9, vim 7.4.898), vim 还是乱码,但其他命令依然正常
下载到 windows 系统上,记事本乱码, SciTE 正常

日志文件是按天生成的,前几天的日志文件用 vim 看也是正常的
file -i 查看,编码也都是 text/plain; charset=utf-8
不同的地方在于, vim 打开会乱码的文件,状态栏上显示 [converted]

今早想起这事特地去看了下当天的日志, vim 也是正常的,但到了晚上,同一个日志文件,又变成乱码了...

$ cat ~/.vimrc
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
set encoding=utf-8
set termencoding=utf-8
setglobal fileencoding=utf-8

哪里的问题??
5874 次点击
所在节点    Vim
11 条回复
chemzqm
2016-01-04 01:58:11 +08:00
congeec
2016-01-04 09:14:32 +08:00
文件没后缀, Locale 没设置好?这个样 vim 就会猜文件编码,猜错了就乱码呗
:h fileencodings
bazz2
2016-01-04 09:36:54 +08:00
终端试试命令:
export LC_CTYPE=zh_CN.gb2312
不同时间打开文件,是不是因为不同终端的环境变量设置是不一样的?
我公司的日志里有 gb2312 中文编码,而系统是 utf-8 的,将终端设置成 gb2312 ,使用 cat 能显示中文,但 vim 就乱码;然后设置环境变量 LC_CTYPE 为 zh_CN.gb2312 , vim 中也正常显示中文了。

死马当活马吃一下吧 =;:=
fuxkcsdn
2016-01-04 13:04:08 +08:00
@chemzqm
还是不行

@congeec
后缀是 .log
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

@bazz2
试了下还是乱码
congeec
2016-01-04 13:05:53 +08:00
@fuxkcsdn 你用 vim 打开乱码文件看看 set fileencoding?的输出是啥,是不是和 file 命令输出一致
fuxkcsdn
2016-01-04 13:44:00 +08:00
@congeec
输出的是
fileencoding=latin1....
fuxkcsdn
2016-01-04 13:52:32 +08:00
@congeec
通过 :e ++enc=utf-8 不再乱码了
但如何强制 vim 不去“猜”文件编码呢?强制用 utf-8 打开
congeec
2016-01-04 13:59:33 +08:00
@fuxkcsdn 我设置了
set fencs=utf8,gb18030,gbk,gb2312,ucs-bom
congeec
2016-01-04 14:00:26 +08:00
@fuxkcsdn 哈哈哈哈,我喜欢你的 ID , CSDN 很讨厌
fuxkcsdn
2016-01-04 14:09:40 +08:00
@congeec
vimrc 里添加上 fencs 就正常了,感谢!!!

因为当初知道这网站是因为 CSDN 泄露事件( google 搜索第一位),然后注册时我的常用 ID 又被提示有屏蔽字...最后一想到 CSDN 泄露了我的一个常用密码就....
KentY
2016-01-04 20:41:33 +08:00
加 fencs 可以, 另外我一直用这个 plugin, 切换编码变得比较容易: 'mbbill/fencview'

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/248075

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX