能在window里吧 unicode列表完整打印么

能在window里吧 unicode列表完整打印么

for i in range(0,65536 ):  
            uchar=unicode("\u%04X"%i,"unicode-escape")
            print "%x :"%i,uchar

这个代码我试验过,0-127 ,GBK的0x4e00-0x9fa5都没问题。但是打到0x80这类的其他代码就出错了
UnicodeEncodeError: 'gbk' codec can't encode character u'\u9fa6' in position 0

在PYTHON文件的开头定义文件的编码对这个有影响吗?还是window当前的语言种类不支持?

有谁想到办法能把完整的 0-65536的整个列表打出来吗,或者在wx之类的窗体支持下打出来也行!

看错了,我再试试。

因为你打印的是unicode,python会自动根据操作系统的编码进行转换,但有些编码并不是合法的gbk编码,所以转换会出错。


QUOTE:
原帖由 limodou 于 2008-8-28 16:01 发表
因为你打印的是unicode,python会自动根据操作系统的编码进行转换,但有些编码并不是合法的gbk编码,所以转换会出错。

我抓取网页时也发生过这样的错误,怎么样解决呢?
最好跟抓取都页面编码一样。实在不行就来回decode,encode把
那要是抓取的网页不确定怎么办……
可以判断content-type里面都charset
或者网页里面都charset

没办法的办法
不错,根据charset,然后不行就是猜。常用的就那么几样,utf-8, gbk。
unicode.org给出了一个完整的对应列表,但并没有给出这个编码区间对应的编码名称,比如0-127我知道是ascii,
0x4e00-0x9fa5是gbk,但其他区间我们不知道啊!是否有什么方式知道unicode模块支持的编码类型呢?

再之,我的问题,似乎是因为python想把unicode字符转化为gbk字符打印出来。是否能让他转为对应的编码打印呢?
使用repr()