当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 这样设置vim的编码会有问题吗?
帖子发表于 : 2009-01-07 0:21 

注册: 2009-01-07 0:16
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
我的locale用的是ZH-CN UTF-8,为了能让vim能正常显示中文,我将.vimrc的相关
部分设成:
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
我怕设置成这样后用vim修改系统文件时,由于编码的转换可能某些信息会丢失,
从而引起系统出问题,虽然据我所知应该不会有问题,但是我想听听大家的意见!
或许会有更好的方法。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 这样设置vim的编码会有问题吗?
帖子发表于 : 2009-01-07 8:52 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
☎ grep fenc .vimrc
set fencs=utf-8,cp936,gb18030,gbk,gb2312

你的拼写错误了?

set encoding=utf-8
这样吧。系统文件缺省都用utf-8保存的。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 这样设置vim的编码会有问题吗?
帖子发表于 : 2009-01-07 9:07 

注册: 2006-09-11 22:47
帖子: 2841
送出感谢: 0 次
接收感谢: 4
zjm 写道:
我的locale用的是ZH-CN UTF-8,为了能让vim能正常显示中文,我将.vimrc的相关
部分设成:
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
我怕设置成这样后用vim修改系统文件时,由于编码的转换可能某些信息会丢失,
从而引起系统出问题,虽然据我所知应该不会有问题,但是我想听听大家的意见!
或许会有更好的方法。


设置这个选项时必须明白,vim并不能猜测编码集,它的设定顺序是基于编码错误!
fencs 设置为多个的前提是:对应的编码集能够判定相关错误。目前已知的能够良好的判断编码错误的只有ucs-bom和utf-8,我自己测试euc-cn也可以,那么如果放置其他任何的编码集,就会导致在这个编码集处停止尝试。
gbk,cp936编码集都是不判定错误的。因此,你这种设定当尝试了utf-8发现出错之后就直接使用gbk,完全不可能走到后面的ucs-bom。

我推荐的设置是:set fencs=ucs-bom,utf-8,euc-cn,cp936
实际上这里的cp936目前经测试是肯定在win和linux下都可用,而且正常支持gbk与gb18030编码的。

事实上ee的设置也有类似的问题存在,基于cp936的编码不能判定错误,后面的所有设置都是完全无效的。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 这样设置vim的编码会有问题吗?
帖子发表于 : 2009-01-07 9:09 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
后面的,确实是没有,我是懒得改。看成一个注释吧。
至于深入理解,我可没去作过。


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 这样设置vim的编码会有问题吗?
帖子发表于 : 2009-01-07 20:19 

注册: 2009-01-07 0:16
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
恩,综和了各方面的信息,现在我把.vimrc改成:
set fileencodings=utf-8,ucs-bom,euc-cn,cp936
let &termencoding=&encoding
因为我也觉得系统文件默认也是utf-8编码的,就把他放最前面了 :em01


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 这样设置vim的编码会有问题吗?
帖子发表于 : 2009-01-07 22:15 

注册: 2009-01-07 0:16
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
这是我从vim的帮助文档看到的内容:
'fileencodings' 'fencs' string (default: "ucs-bom",
"ucs-bom,utf-8,default,latin1" when
'encoding' is set to a Unicode value)
...................................................
The special value "ucs-bom" can be used to check for a Unicode BOM
(Byte Order Mark) at the start of the file. It must not be preceded
by "utf-8" or another Unicode encoding for this to work properly.
An entry for an 8-bit encoding (e.g., "latin1") should be the last,
because Vim cannot detect an error, thus the encoding is always
accepted.
所以我还是接纳poet的推荐,谢谢!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译