转载
http://my.oschina.net/leejun2005/blog/74430
总结:
1)
前缀“u”表示“后面这个字符串“是一个Unicode字符串”,这仅仅是一个声明,并不表示这个字符串就真的是Unicode了;就好比某正太声称自己已满18岁,但实际上他的真实年龄并不确定,现在体育界年龄造假可不稀罕幺!
那么声明成u有什么作用呢?对于Python来说,只要你声明某字符串是Unicode,它就会用Unicode的一套机制对它进行处理。比方说,做字符串操作的时候会动用到内部的Unicode处理函数,保存的时候以Unicode字符(双字节)进行保存。等等。显而易见,对于一个实际上并不是Unicode的字符串,做Unicode动作的处理,是有可能会出问题的。 u前缀只适用于你的字符串常量真的是Unicode的情况
2)
用python处理在处理中文的时候需要注意一些问题。比如:
>>> a = "我是一个中国人"
>>> print a[0:2]
我
>>> print a[0];
Î (只能输出“我”字的前半部分)
。像这样:
c = unicode(a, "gb2312")
print c[0]
这个时候c的下标对应的就是每一个字符,不再是字节,并且通过len(c)就可以获得字符数!还可以很方便的转换为其他编码,比如转换为utf-8:
d = c.encode("utf-8")
未完