这个从GBK到UTF-8编码转换的过程是vim内部实现,还是要借助外部程序? 如果在windows下,记得vim会自动寻找iconv.dll的动态库进行转换,debian下呢?
----- Original Message ----- From: "amateur" <[EMAIL PROTECTED]> To: <debian-chinese-gb@lists.debian.org> Sent: Thursday, November 16, 2006 2:32 PM Subject: Re: gvim的问题,一个gb2312编码的文本文件,当locale为zh-CN.utf-8时用vim打开是乱码 On Wed, Nov 15, 2006 at 01:03:59PM +0800, neno wrote: > ~/.vimrc加入 > set fencs=utf-8,gbk 这一行的作用是告诉 vim,打开一个文件时,尝试 utf8,gbk 两种编码,vim 只 需要扫描文件的前一段,就可以根据文件里面的数据判断出文件是否用的是 utf8 或者 gbk 编码。如果不指定这一行,则 vim 只会用当前编码 (locale) 来打开文件,因为你的 locale 是 UTF-8,而文件是 gbk,所以打开是乱码。 > 试试 > ----- Original Message ----- > From: jun yu > To: debian-chinese-gb@lists.debian.org > Sent: Wednesday, November 15, 2006 12:59 PM > Subject: gvim的问题,一个gb2312编码的文本文件,当locale为zh-CN.utf-8时用vim打开是乱码 > > > gvim的问题,一个gb2312编码的文本文件,当locale为zh-CN.utf-8时用gvim打开是乱码,但是为什么当我在gvim用set > encoding命令设为gb2312时这个文件显示还是乱码? > > 另外在xfce4-terminal > 里,不管我设置locale为什么时,用vim打开那个gb2312文件则都是乱码。是因为和terminal有关系吗?但是我执行ls命令的时候可以看到中文文件名啊。 > > 对这个中文化问题实在是有点弄不清哈。------------------------- 首先,terminal 必须能够显示中文,这是 vim 显示中文的前提,因为 vim 的 显示是依赖于 terminal 的;其次,即使 terminal 能够显示中文,vim 也必须 能够正确的识别文件的编码才能将文件正确的显示出来。比如说一个文件的内容是: 你好,world. 假如这个文件使用 gb2312 编码的,则其二进制内容为:0xAABBCCDDEEFF.., vim 读取这个文件时,读取的就是 0xAABBCCDDEEFF..,如果 vim 将这个二进制 码解释成 gbk 编码,则 vim 会根据你当前 terminal 的编码 (UTF-8) 和 文件 编码 (GBK) 作一个转换,将 gbk 的编码 0xAABBCCDDEEFF.. 转换成 UTF-8 的 编码 0xXXYYZZEE...,并将转换后的二进制码送到 terminal 显示,由于 0xXXYY... 对应于 UTF8 编码的 "你好,world.",所以 terminal 可以正常显 示。如果 vim 不知道文件的编码是 gbk,则它认为文件的编码就是 utf8,这样 就没有一个从 gbk->utf8 的转换过程,所以 terminal 接收到的二进制码就是 0xAABBCCDDEEFF..,故 terminal 将这个二进制码当作 utf8 编码来索引字体文 件,得到的就是稀奇古怪的中文字了,肯定就不是 "你好,world."了。 不知道这个解释有没有让你有所理解中文化的原理。 -- [32m《游子吟》[m [33m作者:孟郊[m 慈母手中线,游子身上衣。 临行密密缝,意恐迟迟归。 谁言寸草心,报得三春晖。