lilydjwg 写了:redhatlinux10 写了:lilydjwg 写了:rpwt。我这里 UTF-8 正常打开。
如果说是rpwt,那我的理解就是vim的容错机制做的不好。有些程序在你这里跑得欢畅,在别人那里就错误百出,典型的对环境检测和容错不够。
请问这和容错机制有什么关系?人家 Windows 下的 iconv.dll 就是不支持你文件 243 行的制表字符你让 Vim 怎么办?难道你让 Vim 默认 Windows 下 iconv.dll 有 bug?有 bug 又怎么办?怎么容错?明明出错了却当作什么错误都没有发生?
我们假定我这个问题是由于iconv.dll引起的。
根据我的了解,iconv.dll是gnu项目的,非windows系统自带
我也没有给vim安装这个iconv.dll
那如果问题真是iconv.dll引起,那就说明了vim自带了iconv.dll,说明了iconv.dll是vim自带的第三方组件。
好了,我来打个比喻:
我的A产品中使用到了apache项目的dbcp连接池组件,刚开始的时候,dbcp工作的很好,客户也很开心,狠狠地赞美了一番我们产品,我心中暗自窃喜;后来dbcp出问题啦,出现了很多连接没有正常关闭导致数据库资源被大量消耗的现象,客户急了,说你们这是什么破产品,把我的数据库都搞死了,这时我委屈的说:这不关我的事情呀,我们用的是dbcp,是apache组织的,你要问责你找他们去!
看,有功劳的时候,自己揽下了;出问题的时候,推到第三方组件身上。我做的很不厚道呀。
lilydjwg 写了:另外说下,那些制表字符无法转换到 cp936。再说下,你那些 cp936 之后 latin1 之前写的编码名完全无用的。别哪天发现你的 big5 文件在 Vim 下被识别成了 cp936 又怪 Vim 的中文支持不好!
感谢指出在vim中存在的cp936和big5的问题!
我另外搜索参考了一些文章:
tellenc.exe作者的文章
http://www.ibm.com/developerworks/cn/linux/l-tip-vim1/
滇狐的文章
http://edyfox.codecarver.org/html/vim_f ... ction.html
这两篇文章中都直接或者间接的指出了fileencodings检测机制的不足(尝试使用某一个编码来解码文件,看是否报错),特别是Vim 不能识别 8 比特编码中的错误,使得vim不能区分big5和gb编码,这不能不说是vim的不足之处。
坦率地说,尝试解码,失败再换下一个,这个方式,在我看来,并不是一个好的方式;这种方式失败率太高;而基于词频统计的检测机制则好很多,比如mozilla项目的chardet,但终究也会有失手的时候;在我经手的项目中就出现过,编码检测,本质上来说,都是不精确的。
lilydjwg你也莫急,你那么多的感叹号,让我感觉你情绪波动了。对不起,我的错。你解答了我很多的vim疑问,我应该感谢你,而不是惹怒你。你莫生气,我的贴你以后还会回的,是吧
我也算是vim的爱好者,你看我在本坛发达帖子多数都是和vim有关的就知道了。我也不是在派vim的不是,只是有问题我们应该正视。
补充一下:我那个问题应该和iconv.dll没有关系的,因为我的系统上没有这个文件呀。如理解有误,还望指正。