Python论坛  - 讨论区

标题:[python-chinese] Re: Python Unicode 问题!!!

2005年06月03日 星期五 17:33

Qiangning Hong hongqn at gmail.com
Fri Jun 3 17:33:19 HKT 2005

Neo Chan (netkiller) wrote:
> 
> >>>len('中')
> 3

看来你用的是UTF-8编码

> >>>a=u'中'

这么写在UTF-8的控制台下等价于a=u'\xe4\xb8\xad',也即
a=u'\u00e4\u00b8\u00ad',是由三个unicode字符组成的unicode字符串。


> >>>a
> u'\xe4\xb8\xad'

所以就会出这个结果了

> >>>print a
> Traceback (most recent call last):
>   File "", line 1, in ?
> UnicodeError: ASCII encoding error: ordinal not in range(128)
> 为什么不行????

print语句需要将unicode对象转换成string(字节序列),隐含调用了encode方
法。而默认的encoding是ascii,不能表示这三个字符,因此抛出异常。

(不过在我这里直接print并不报错,而是输出了三个字符。sys.stdout.write(a)
则报错了,不知道为什么)

> 
> >>>a[0]
> 
> u'\xe4'
> 输出是u'\xe4',为什么不试‘中’

因为a是由三个unicode字符组成,这里返回第一个字符。


在UTF-8控制台下只能用unicode('中', 'UTF-8')来产生unicode字符“中”(即u'\
u4e2d')

在程序源代码里则可以使用注释
# --*-- encoding: UTF-8 --*--
表明编码后,采用u'中'来直接生成。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号