windows下gvim打开文件显示乱码的解决

本文提供了解决Windows环境下GVim打开含有中文的文件出现乱码问题的方法,通过设置编码方式和调整.vimrc文件,确保文件、菜单、提示信息正确显示。

问题:

在windows中安装了gvim73,但是,使用gvim打开文件的时候,如果文件内容包含中文,那么,打开之后总是看到一堆乱码。


解决办法:

放狗搜了一下,发现这篇文章完美地解决了我的问题:

http://www.douban.com/note/145491549/

查看文件的编码:
:echo &fileencoding

Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding (这些选项可能的取值请参考 Vim 在线帮助 :help encoding-names),它们的意义如下:

    encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。
    fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
    fileencodings: Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。
    termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的 Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。


用英文菜单和提示最好,可以免去下面对菜单和提示信息(B,C部分)的设置
如果用英文菜单和提示在安装gvim的时候,将支持本地语言的选项去掉。

解决vim文件乱码,打开文件乱码,菜单,提示信息乱码:
  有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding
  在linux中修改.vimrc(在win中是_vimrc)

windows系统也可以在vim菜单项中:编辑>启动设定,直接打开_vimrc文件

A,"设置文件的代码形式
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,chinese,cp936

B,"vim的菜单乱码解决:
"同样在 _vimrc文件里以上的中文设置后加上下列命令,
  source $VIMRUNTIME/delmenu.vim
  source $VIMRUNTIME/menu.vim

C,"vim提示信息乱码的解决
language messages zh_CN.utf-8


在windows下,修改安装目录下的_vimrc文件,添加如下几行:

set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,chinese,cp936
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

保存_vimrc文件,用gvim再次打开同一个文件,乱码现象消失,问题解决了。



<think>我们正在解决gvim打开文件时出现乱码的问题。根据引用内容,乱码通常是由于编码设置不正确导致的。gvim有多个编码相关的设置选项,包括encoding、fileencoding、fileencodings和termencoding(在GUI模式下通常无效)。我们需要正确配置这些选项。 解决方案步骤: 1. 修改gvim的配置文件Windows下是_vimrc,Linux下是.vimrc)。 2. 在配置文件中设置编码相关选项,特别是设置内部编码(encoding)为utf-8,并设置支持打开文件编码列表(fileencodings),这样gvim会尝试用列表中的编码依次打开文件。 具体配置如下(添加到_vimrc或.vimrc中): ``` " 设置gvim内部使用的编码,推荐设置为utf-8 set encoding=utf-8 " 设置gvim支持打开文件编码列表,按顺序尝试 set fileencodings=utf-8,gbk,gb18030,gb2312 " 设置文件写入时的编码,通常与fileencodings中的第一个相同或由gvim自动判断 set fileencoding=utf-8 " 对于终端版本的vim,可能需要设置termencoding终端一致,但gvim(GUI模式)可以忽略 " 在Windows GUI模式下,termencoding设置无效,所以不需要设置 ``` 解释: - `encoding`:设置gvim内部使用的字符编码,推荐使用utf-8,因为它是通用编码,支持多种语言。 - `fileencodings`:设置一个编码列表,当打开文件时,gvim会按照这个列表的顺序尝试解码文件。如果第一种编码失败,则尝试下一种,直到成功。这里我们设置了utf-8和几种常见的中文编码(gbk, gb18030, gb2312)。 - `fileencoding`:设置当前编辑的文件保存时使用的编码。这里设置为utf-8,但也可以不设置,因为gvim会根据打开文件时的编码自动设置fileencoding,或者在保存时根据需求改变。 注意:在Windows下,gvim的菜单乱码可能是由于系统语言设置或gvim自身设置问题。如果上述设置后菜单仍然乱码,可以尝试以下设置: ``` " 设置菜单语言,例如设置成英文菜单(避免中文菜单乱码) source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim " 或者设置成中文菜单(需要系统支持) " language messages zh_CN.utf-8 ``` 但是,用户的问题主要是打开文件时出现乱码,所以我们重点放在文件编码设置上。 如果问题仍然存在,请检查: 1. 文件本身是否损坏或使用了非常特殊的编码。 2. 系统是否支持所需的编码(通常Windows系统需要确保系统区域设置中支持非Unicode程序的中文,或者使用utf-8编码支持)。 另外,如果文件Windows系统常用的ANSI编码(即GBK),那么设置fileencodings中包含gbk就可以正确打开。 因此,我们给出如下配置代码,添加到gvim的配置文件中: ```vim " 设置编码 set encoding=utf-8 " 设置文件编码检测顺序 set fileencodings=utf-8,gbk,gb18030,gb2312 " 设置新文件保存时的编码 set fileencoding=utf-8 ``` 保存配置文件并重启gvim,再打开文件应该可以解决乱码问题。 如果用户遇到的是菜单乱码,则可以尝试设置语言菜单: ```vim " 解决菜单乱码 if has("win32") source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim language messages zh_CN.utf-8 endif ``` 注意:如果系统不支持中文,那么设置中文菜单可能会失败,此时可以设置为英文菜单。 相关问题: 1. 如何让gvim同时支持打开多种编码的文件? 2. gvim在保存文件时如何改变编码? 3. 如何解决gvim控制台输出乱码? 4. gvimLinux系统下打开Windows创建的文件乱码怎么办?</think>### 解决gvim打开文件乱码问题 根据引用内容分析,gvim乱码问题通常由编码设置冲突引起。以下是完整的解决方案: #### 核心配置方案(修改`_vimrc`或`.vimrc`文件) ```vim " 设置内部编码(处理文本的核心编码) set encoding=utf-8 " 设置文件编码检测顺序(从左到右尝试) set fileencodings=utf-8,gbk,gb18030,gb2312,ucs-bom,cp936 " 设置新文件保存时的默认编码 set fileencoding=utf-8 " 对于Windows GUI用户,解决菜单乱码问题 if has("gui_running") source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim language messages zh_CN.utf-8 endif ``` #### 分步说明: 1. **内部编码设置** `set encoding=utf-8` 确保Vim内部使用UTF-8处理文本,这是现代编码标准[^1] 2. **文件编码检测** `set fileencodings=...` 按顺序尝试的编码列表,优先使用UTF-8,其次是中文常用编码(GBK/GB18030)[^2] 3. **GUI菜单修复** ```vim source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim language messages zh_CN.utf-8 ``` 重置菜单并设置中文语言环境,解决菜单乱码[^3] 4. **终端编码说明** `termencoding`设置对Windows GUI版gvim无效,无需配置[^3] #### 特殊情况处理: 1. **打开特定编码文件** 在命令模式显式指定编码: ```vim :e ++enc=gbk filename.txt " 强制用GBK编码打开 ``` 2. **转换文件编码** 打开文件后转换编码并保存: ```vim :set fileencoding=utf-8 " 转换为UTF-8 :w " 保存 ``` 3. **Linux系统额外配置**: ```vim set langmenu=zh_CN.UTF-8 set imcmdline ``` #### 验证步骤: 1. 将配置添加到`_vimrc`(Windows)或`.vimrc`(Linux) 2. 重启gvim 3. 检查编码设置: ```vim :set encoding? fileencodings? fileencoding? ``` > ⚠️ 注意:如果文件本身已损坏,需使用`iconv`等工具转换: > ```bash > iconv -f GBK -t UTF-8 input.txt > output.txt > ``` ### 相关问题 1. 如何让gvim自动识别混合编码的文件? 2. 不同操作系统的gvim编码设置有哪些差异? 3. 如何解决gvim编辑后保存出现的乱码问题? 4. 除了编码设置,还有哪些原因会导致gvim显示异常? [^1]: 内部编码设置是解决乱码的基础配置 [^2]: 文件编码检测顺序决定了Vim如何解释文件内容 [^3]: GUI模式下菜单乱码需要特殊处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值