<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[刘新修]]></title> 
<link>http://pic1.liuxinxiu.com:80/index.php</link> 
<description><![CDATA[刘新修的个人博客 (Liuxinxiu'S Blog)]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[刘新修]]></copyright>
<item>
<link>http://pic1.liuxinxiu.com:80/vim_encoding/</link>
<title><![CDATA[查看163.com 另存163.html 使用GVIM 打开中文乱码问题]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Vim 编辑器]]></category>
<pubDate>Sun, 04 Dec 2011 05:06:32 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/vim_encoding/</guid> 
<description>
<![CDATA[ 
	<p><span style="background-color: #ffff99"><strong><span>&nbsp; <span style="color: #ff0000">set encoding=gbk</span>&nbsp;&nbsp;&nbsp;&nbsp; -------- 如果fileencodings&nbsp;全部探测不到，则以该编码替换fileencoding 存盘，内部数据编码<br />&nbsp; <span style="color: #ff0000">set termencoding=utf-8<br /></span>&nbsp; <span style="color: #ff0000">set fileencoding=utf-8</span>&nbsp; ----- 以该编码格式进行文件存盘<br />&nbsp; <span style="color: #ff0000">set fileencodings</span>=ucs-bom,utf-8,gbk,cp936,gb18030,big5,gb2312&nbsp;&nbsp;&nbsp;&nbsp; ----- 自动探测文件编码格式，如果符合其中一种替换到fileencoding<br />&nbsp; <span style="color: #ff0000">set langmenu=zh_CN.gbk</span>&nbsp;&nbsp; ------&nbsp; 设置整套窗口语言环境<br />&nbsp; <span style="color: #ff0000">language messages zh_cn.gbk</span>&nbsp;&nbsp;&nbsp; ------&nbsp; 设置整套菜单语言环境<br /></span></strong></span></p><p><span style="color: #0000ff">VIM 查看当前文件编码&nbsp; :set fileencoding</span></p><p><span style="color: #0000ff">VIM 设置当前文件编码&nbsp; :set fileencoding=utf-8</span></p><p>=============== （转）详细分析 ======================================================</p><p>很惭愧，作为vim的忠实用户，自从2年多前从help里知道了:edit <br />++enc=xxx这个命令之后，我就没有去了解过vim的编码设定了。这些年来，我遇到编码出错，总是:edit <br />++enc=xxx。今天:help了一下encoding等，终于搞清楚了相关的各个变量的作用和关系。<br />简单的说，有三个设置。(我下面基本以中文环境来作为说明)</p><p><br />1) 在.vimrc或者_vimrc里加入set <br />fileencodings=utf-8,gb2312,gbk,gb18030,big5这句就基本OK了。vim会依次使用这些编码对文件进行编码的猜测。<br />2) 如果还是不行，那么在打开文件之后，用:edit <br />++enc=gbk这个命令强制使用某个编码。<br />3) 如果依然不行，请检查你的$LANG环境变量。</p><p><br />下面是详细的说明。<br />vim编码主要涉及三个变量。<br />encoding<br />vim的内部编码，包括内存数据的编码，vim配置文件的编码。encoding取自变量$LANG，如果$LANG为空，则取latin1。这个编码应该和你的终端编码保持一致的。<br />fileencoding<br />文件的编码。vim在加载文件的时候，会把这个编码转换成encoding参数的编码。同样的，保存文件的时候，内存的编码会由encoding转变为fileencoding。<br />需要注意的是，在vimrc里设置这个参数，不会起作用。因为打开一个文件的时候，fileencodings或者encoding会覆盖fileencoding。关于这个，可以看下面提到的打开文件流程。<br />fileencodings=utf-8,gbk,gb2312<br />vim在加载一个文件的时候，会依次尝试使用fileencodings里的编码作为fileencoding。如果全部失败，那么vim会使用encoding作为fileencoding。<br />另外，如果vim使用了错误的编码，可以使用edit <br />++enc=gbk这个命令。意思是，重新读取文件，并强制使用gbk作为fileencoding。这时候会忽略filencodings。<br />以下是一些vim操作的内部流程<br />打开文件<br />首先从文件读入数据到内存，然后从fileencodings里依次使用各个编码来尝试转换为encoding。如果有一个成功，则中止尝试。如果找不到，则取encoding作为fileencoding。也就是说，这里有一个从fileencoding转换为encoding的过程。<br />保存文件</p><p><br /><strong><span style="color: #0000ff">把内存的数据，从encoding，转换为fileencoding，然后写入文件。<br /></span></strong>其实在这里最容易让人搞不清楚的就是encoding和fileencoding的区别。因为在大多数GUI特别是WINDOWS平台的编辑器里，encoding都是不需要设置的。通常这个encoding都是默认和GUI环境的编码保持一致。<span style="color: #800000"><strong>encoding是数据在内存里的存储编码</strong></span>，而fileencoding才是文件的编码。<br />&nbsp;</p>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/vim_encoding/#blogcomment</link>
<title><![CDATA[[评论] 查看163.com 另存163.html 使用GVIM 打开中文乱码问题]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/vim_encoding/#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>