[CPyUG] window xp,gvim下,在NERD_tree下,使用 “m”,“a”创建新的文件,为何文件格式为ansi?

5 views
Skip to first unread message

feelsky

unread,
Apr 23, 2010, 12:59:07 AM4/23/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
这个是vimc中的配置:

let &termencoding=&encoding
set encoding=cp936
set langmenu=zh_CN.UTF-8
set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-
kr,gb18030,latin1
set helplang=cn

还有个问题是,win下的ansi格式文件,我用gvim转换编码为utf-8,竟然转不过去,很让我抓狂啊。

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

Subscription settings: http://groups.google.com/group/python-cn/subscribe?hl=zh-CN

Pan Shi Zhu

unread,
Apr 23, 2010, 1:18:44 AM4/23/10
to pyth...@googlegroups.com
没听说过 ansi 格式的文件。至少在 vim 里面不是这么叫的。请明确说清楚你的文件究竟是什么编码。

vim 只支持这些编码:

Supported 'encoding' values are: *encoding-values*
1 latin1 8-bit characters (ISO 8859-1)
1 iso-8859-n ISO_8859 variant (n = 2 to 15)
1 koi8-r Russian
1 koi8-u Ukrainian
1 macroman MacRoman (Macintosh encoding)
1 8bit-{name} any 8-bit encoding (Vim specific name)
1 cp437 similar to iso-8859-1
1 cp737 similar to iso-8859-7
1 cp775 Baltic
1 cp850 similar to iso-8859-4
1 cp852 similar to iso-8859-1
1 cp855 similar to iso-8859-2
1 cp857 similar to iso-8859-5
1 cp860 similar to iso-8859-9
1 cp861 similar to iso-8859-1
1 cp862 similar to iso-8859-1
1 cp863 similar to iso-8859-8
1 cp865 similar to iso-8859-1
1 cp866 similar to iso-8859-5
1 cp869 similar to iso-8859-7
1 cp874 Thai
1 cp1250 Czech, Polish, etc.
1 cp1251 Cyrillic
1 cp1253 Greek
1 cp1254 Turkish
1 cp1255 Hebrew
1 cp1256 Arabic
1 cp1257 Baltic
1 cp1258 Vietnamese
1 cp{number} MS-Windows: any installed single-byte codepage
2 cp932 Japanese (Windows only)
2 euc-jp Japanese (Unix only)
2 sjis Japanese (Unix only)
2 cp949 Korean (Unix and Windows)
2 euc-kr Korean (Unix only)
2 cp936 simplified Chinese (Windows only)
2 euc-cn simplified Chinese (Unix only)
2 cp950 traditional Chinese (on Unix alias for big5)
2 big5 traditional Chinese (on Windows alias for cp950)
2 euc-tw traditional Chinese (Unix only)
2 2byte-{name} Unix: any double-byte encoding (Vim specific name)
2 cp{number} MS-Windows: any installed double-byte codepage
u utf-8 32 bit UTF-8 encoded Unicode (ISO/IEC 10646-1)
u ucs-2 16 bit UCS-2 encoded Unicode (ISO/IEC 10646-1)
u ucs-2le like ucs-2, little endian
u utf-16 ucs-2 extended with double-words for more characters
u utf-16le like utf-16, little endian
u ucs-4 32 bit UCS-4 encoded Unicode (ISO/IEC 10646-1)
u ucs-4le like ucs-4, little endian


2010/4/23 feelsky <vincen...@gmail.com>:

feelsky

unread,
Apr 23, 2010, 1:28:50 AM4/23/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
ANSI,如果你用记事本打开,然后另存为,你就会发现这个编码。关键是我用gvim创建的文件为何不是utf-8的文件编码呢?

wolfv

unread,
Apr 23, 2010, 2:07:16 AM4/23/10
to pyth...@googlegroups.com
2   cp936       simplified Chinese (Windows only)
我的设置是:
set encoding=utf-8
set fileencodings=utf-8,gbk,default,latin1
PS=》
UNix换行:
set ff=unix
2010/4/23 feelsky <vincen...@gmail.com>

feelsky

unread,
Apr 23, 2010, 2:40:20 AM4/23/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
搞定了,把notepad,notepad++,vim,utraledit,都试了一遍,弄明白咋回事了,这个跟notepad,微软这个记事本有关
系,这个家伙显示的ANSI,其实就是UTF-8,无bom格式。

feelsky

unread,
Apr 23, 2010, 2:53:11 AM4/23/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个
文本文件是ASCII的还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件做个这样的标记。


我鄙视微软一下。浪费了我好多时间。

诚子

unread,
Apr 23, 2010, 3:25:15 AM4/23/10
to pyth...@googlegroups.com
在 2010年4月23日 下午2:53,feelsky <vincen...@gmail.com>写道:
微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个
文本文件是ASCII的还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件做个这样的标记。



那 "联通" 事件是怎么回事呢?
 
我鄙视微软一下。浪费了我好多时间。

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

Subscription settings: http://groups.google.com/group/python-cn/subscribe?hl=zh-CN



--
my.unix-center.net/~WeiZhicheng

feelsky

unread,
Apr 23, 2010, 4:21:22 AM4/23/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
很简单啊,我鄙视微软,微软鄙视联通。哈

Yesheng Zou

unread,
Apr 23, 2010, 12:29:08 PM4/23/10
to pyth...@googlegroups.com
微软自己的行为?!

我XXXXX。

去年用版本旧一点的 sphinx 做文档时,就碰到过这个问题。(http://sphinx.pocoo.org/changes.html 见0.6.2的changelog)

我用 vim 在 ubuntu 下用得好好的,同事拿到 windows 下改了一下就编译不过了。

当找到这个原因后,同事说,标准的 UTF8 前面就有这三个字节。我当时就不明白为什么只有 UTF8 有特别的标识,而其它格式的没有。而且 vim 自己创建的 UTF8 的文件是没有这三个多余的字节的。vim 真的放所谓的“标准”不管?

那么现在结论是,这又是一个 windows only 的东西?

在 2010年4月23日 下午2:53,feelsky <vincen...@gmail.com>写道:
微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个
文本文件是ASCII的还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件做个这样的标记。


我鄙视微软一下。浪费了我好多时间。



--
From:  Yesheng Zou

诚子

unread,
Apr 23, 2010, 12:59:37 PM4/23/10
to pyth...@googlegroups.com
在 2010年4月24日 上午12:29,Yesheng Zou <yeshe...@gmail.com>写道:
微软自己的行为?!

我XXXXX。

去年用版本旧一点的 sphinx 做文档时,就碰到过这个问题。(http://sphinx.pocoo.org/changes.html 见0.6.2的changelog)

我用 vim 在 ubuntu 下用得好好的,同事拿到 windows 下改了一下就编译不过了。

当找到这个原因后,同事说,标准的 UTF8 前面就有这三个字节。我当时就不明白为什么只有 UTF8 有特别的标识,而其它格式的没有。而且 vim 自己创建的 UTF8 的文件是没有这三个多余的字节的。vim 真的放所谓的“标准”不管?

那么现在结论是,这又是一个 windows only 的东西?

BOM吧。。。
 

在 2010年4月23日 下午2:53,feelsky <vincen...@gmail.com>写道:
微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个

文本文件是ASCII的还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件做个这样的标记。


我鄙视微软一下。浪费了我好多时间。



--
From:  Yesheng Zou


--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp



--
my.unix-center.net/~WeiZhicheng

Pan Shi Zhu

unread,
Apr 24, 2010, 12:01:56 AM4/24/10
to pyth...@googlegroups.com
2010/4/24 Yesheng Zou <yeshe...@gmail.com>:

> 当找到这个原因后,同事说,标准的 UTF8 前面就有这三个字节。我当时就不明白为什么只有 UTF8 有特别的标识,而其它格式的没有。而且 vim
> 自己创建的 UTF8 的文件是没有这三个多余的字节的。vim 真的放所谓的“标准”不管?
>
> 那么现在结论是,这又是一个 windows only 的东西?
>

这个说法的症结是:按照规定 utf-8 本身的标准是不应当有BOM的。
而UCS-2和UTF16标准规定必须要有BOM。后来微软认为应当“允许并提倡对utf-8增加bom”。但是POSIX/Linux阵营对此有较大的意见,认为utf-8不应当加BOM,因为加bom的utf-8违背了unix的很多假定,导致经典的unix程序有bug。

POSIX认为文件应当是纯净的可分拆和拼接的字节流。而带bom的utf-8文件无法被简单的分拆和拼接(会导致无bom或者双bom的文件)。

现实情况是,加BOM的utf-8文件会导致许多 POSIX/Linux工具处理起来存在问题。——最常见的例子就是 gcc 拒绝编译任何带
bom 的 utf-8 文件。

所以,结论就是:如果你使用Linux,那么utf-8不应当带bom,如果使用windows,那么最好是不要使用notepad。



--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

Subscription settings: http://groups.google.com/group/python-cn/subscribe?hl=zh-CN

Pan Shi Zhu

unread,
Apr 24, 2010, 12:04:44 AM4/24/10
to pyth...@googlegroups.com
2010/4/23 诚子 <zhiche...@gmail.com>:
>
> 那 "联通" 事件是怎么回事呢?

windows notepad 不能正确处理不带 bom 的 utf-8 文件。事实上貌似 vc 也不行。

微软建议 utf-8 文件一定要带 bom
linux 建议 utf-8 文件一定不要带 bom

Yesheng Zou

unread,
Apr 24, 2010, 6:28:44 AM4/24/10
to pyth...@googlegroups.com
又长见识了,哈哈。

> POSIX认为文件应当是纯净的可分拆和拼接的字节流。
而带bom的utf-8文件无法被简单的分拆和拼接(会导致无bom或者双 bom的文件)。

我觉得这点非常重要。


在 2010年4月24日 下午12:01,Pan Shi Zhu <pan.s...@gmail.com>写道:
2010/4/24 Yesheng Zou <yeshe...@gmail.com>:
> 当找到这个原因后,同事说,标准的 UTF8 前面就有这三个字节。我当时就不明白为什么只有 UTF8 有特别的标识,而其它格式的没有。而且 vim
> 自己创建的 UTF8 的文件是没有这三个多余的字节的。vim 真的放所谓的“标准”不管?
>
> 那么现在结论是,这又是一个 windows only 的东西?
>

这个说法的症结是:按照规定 utf-8 本身的标准是不应当有BOM的。
而UCS-2和UTF16标准规定必须要有BOM。后来微软认为应当“允许并提倡对utf-8增加bom”。但是POSIX/Linux阵营对此有较大的意见,认为utf-8不应当加BOM,因为加bom的utf-8违背了unix的很多假定,导致经典的unix程序有bug。

POSIX认为文件应当是纯净的可分拆和拼接的字节流。而带bom的utf-8文件无法被简单的分拆和拼接(会导致无bom或者双bom的文件)。

现实情况是,加BOM的utf-8文件会导致许多 POSIX/Linux工具处理起来存在问题。——最常见的例子就是 gcc 拒绝编译任何带
bom 的 utf-8 文件。

所以,结论就是:如果你使用Linux,那么utf-8不应当带bom,如果使用windows,那么最好是不要使用notepad。


--
From:  Yesheng Zou

大熊

unread,
Apr 24, 2010, 9:58:45 AM4/24/10
to pyth...@googlegroups.com
当初windows下的python处理带bom的脚本也会崩溃,我还曾去提交过这个bug。


--
立志在女儿把我搞崩溃前把她养大:(

诚子

unread,
Apr 24, 2010, 10:26:52 AM4/24/10
to pyth...@googlegroups.com


在 2010年4月24日 下午9:58,大熊 <bears...@gmail.com>写道:
当初windows下的python处理带bom的脚本也会崩溃,我还曾去提交过这个bug。

膜拜

PS:
你的签名好有爱~


--
立志在女儿把我搞崩溃前把她养大:(

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp



--
my.unix-center.net/~WeiZhicheng
Reply all
Reply to author
Forward
0 new messages