V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fuxkcsdn
V2EX  ›  Vim

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

  •  
  •   fuxkcsdn · 2016-01-04 01:50:05 +08:00 · 5874 次点击
    这是一个创建于 3247 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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

    哪里的问题??
    11 条回复    2016-01-04 20:41:33 +08:00
    chemzqm
        1
    chemzqm  
       2016-01-04 01:58:11 +08:00
    congeec
        2
    congeec  
       2016-01-04 09:14:32 +08:00 via iPhone
    文件没后缀, Locale 没设置好?这个样 vim 就会猜文件编码,猜错了就乱码呗
    :h fileencodings
    bazz2
        3
    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
        4
    fuxkcsdn  
    OP
       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
        5
    congeec  
       2016-01-04 13:05:53 +08:00
    @fuxkcsdn 你用 vim 打开乱码文件看看 set fileencoding?的输出是啥,是不是和 file 命令输出一致
    fuxkcsdn
        6
    fuxkcsdn  
    OP
       2016-01-04 13:44:00 +08:00
    @congeec
    输出的是
    fileencoding=latin1....
    fuxkcsdn
        7
    fuxkcsdn  
    OP
       2016-01-04 13:52:32 +08:00
    @congeec
    通过 :e ++enc=utf-8 不再乱码了
    但如何强制 vim 不去“猜”文件编码呢?强制用 utf-8 打开
    congeec
        8
    congeec  
       2016-01-04 13:59:33 +08:00   ❤️ 1
    @fuxkcsdn 我设置了
    set fencs=utf8,gb18030,gbk,gb2312,ucs-bom
    congeec
        9
    congeec  
       2016-01-04 14:00:26 +08:00
    @fuxkcsdn 哈哈哈哈,我喜欢你的 ID , CSDN 很讨厌
    fuxkcsdn
        10
    fuxkcsdn  
    OP
       2016-01-04 14:09:40 +08:00
    @congeec
    vimrc 里添加上 fencs 就正常了,感谢!!!

    因为当初知道这网站是因为 CSDN 泄露事件( google 搜索第一位),然后注册时我的常用 ID 又被提示有屏蔽字...最后一想到 CSDN 泄露了我的一个常用密码就....
    KentY
        11
    KentY  
       2016-01-04 20:41:33 +08:00
    加 fencs 可以, 另外我一直用这个 plugin, 切换编码变得比较容易: 'mbbill/fencview'
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2808 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:29 · PVG 17:29 · LAX 01:29 · JFK 04:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.