zoukankan      html  css  js  c++  java
  • Vim 字符集问题

        使用CentOS中的Vim 文本编辑器出现中文乱码的问题。

         凡是字符乱码的问题,都是字符集不匹配的问题引起的。这里的字符集不匹配只的是文件的编码和解码方式不匹配,同时可能涉及到不只一次的解码过程。

      计算机中的所有文件都是以二进制格式存储的(计算机可识别内容)。我们在读取文件内容时,均是通过不同的软件读取的,软件在读取文件内容时,需要使用不同的字符集来识别文件中的人类可识别内容。字符集就是一个数值与人类可识别基础字符的对照表。

       一个文件 有自己的编码字符集,编辑器在读取文件时有自己的字符集,在linux系统中还会涉及到终端的显示字符集。

         在Xshell终端中使用Vim打开文件时,中文出现乱码。分析原因时要考虑:1.文件的原始编码方式 2.vim打开文件的编码方式 3. xshell 终端的编码方式。

           在 Vim 中主要有三个和字符集相关的变量: encoding(enc) , fileencoding(fenc) , fileencodings(fencs).  

           fileencodings:打开文件的时候进行解码的猜测列表。

           fileencoding :用于设置保存文件时使用的字符集。

           encoding:用于设置编辑文件时使用的字符集。   

       例如:可以使用下面的命令

       1.  :edit ++enc=<encoding> [filename]   以指定的编码格式重新打开文件。即在这种字符集下编辑文件。

       2.  :write ++enc=<encoding> [filename]  以指定的编码格式保存文件。

            以上两种方式是可以暂时 覆盖 下边 3.4 两种方式指定的默认 编辑、写入时默认的字符集。

       3. :set encoding[=<encoding>]  指定编辑文件的字符集。(显示时)

       4. :set fileencoding[=<encoding>] 指定保存文件的字符集。(写入时)

         我们使用vim打开编辑文件时,文件时存在于内存中的,当编辑完成时 使用  :w 命令将内容写入磁盘,所以会有encoding 和 fileencoding 两种参数的,分别设置打开文件编辑时及保存内容到硬盘时使用的字符集。

        vim 在打开文件是 首先根据变量 fileencodings 中的 字符集类别 猜测正确的字符集,然后将fileencoding 变量设置成选中的字符集。如果fileencodings 没有设置,选择用系统的字符集 (locale 命令查看)。之后fileencoding 被设置为此编码。

        使用vim打开一个文件,可以使用 [:set fileencodings]  ,[:set fileencoding] , [:set encoding] 查看当前变量的配置信息。

        在Centos中配置vim的三个变量:/etc/vimrc 文件中。

    参考的文章:

    https://spin.atomicobject.com/2011/06/21/character-encoding-tricks-for-vim/ 

    http://www.itnose.net/detail/6487670.html

    http://stackoverflow.com/questions/16507777/vim-set-encoding-and-fileencoding-utf-8

    http://stackoverflow.com/questions/1174847/how-to-set-the-character-encoding-for-a-file-in-vim

    http://www.cnblogs.com/ggjucheng/archive/2012/01/04/2312522.html

    http://www.cnblogs.com/jacklikedogs/p/3494566.html

    http://www.joelonsoftware.com/articles/Unicode.html

    http://blog.sina.com.cn/s/blog_912de1360102wm5p.html

    http://www.joelonsoftware.com/articles/Unicode.html

  • 相关阅读:
    翻String.Format源码发现的新东西:StringBuilderCache
    禁止Asp.Net WebService 的Test页面功能
    利用XML序列化和Asp.Net Web缓存实现站点配置文件
    使用.NET配置文件appSettings元素的File属性
    <probing> 元素指定扩展Asp.Net加载程序集位置
    Windbg .net内存调试有用的命令(笔记 )
    The Dangers of the Large Object Heap(转载,LOH内存碎片情景重现)
    Advanced .NET Debugging: Managed Heap and Garbage Collection(转载,托管堆查内存碎片问题解决思路)
    调试.NET程序OutOfMemoryException (转载)
    mysql数据库之索引和分析索引
  • 原文地址:https://www.cnblogs.com/igoogleyou/p/linuxvim.html
Copyright © 2011-2022 走看看