Python unicode转义字符u的处理

Python unicode转义字符u的处理

python还有更为专业的方法来解决unicode转义字符问题,那就是unicode-escape编码。

s2 = "u2121"

s = s2.decode("unicode-escape")

就可以了

Python中的字符编码与解码困扰了我很久了,一直没有认真整理过,这次下静下心来整理了一下我对方面知识的理解。
文章中对有些知识没有做深入的探讨,一是我自己也没有去深入的了解,例如各种编码方案的实现方式等;二是我觉得只要提能对理解Python字符编码与解码的关键知识即可,想深入可以查其它资料。
文中的观点肯定有纰漏,只做参考,欢迎指正。

Unicode

参考:http://baike.baidu.com/view/40801.htm

Unicode是什么,这里不多说了,百科上面讲的很清楚了,这里只提下有助于理解本文主题的知识。

Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。每个字符都对应一个编号,编号的范围是0-0x10FFFF来。

字符编码方案

参考:http://baike.baidu.com/view/40801.htm

我们知道,每个Unicode字符对应一个编号,例如汉字“我”对应的编号是25105,但在程序中不是直接用编号来表示Unicode字符的(那得有多长的数字啊),而是表示成16进制格式,但具体怎么转换成16进制,不同的编码方案采用的方式不一样。

>>> s = u'我'
>>> ord(s)
25105
>>> s
u'u6211'
>>> s.encode('utf-8')
'xe6x88x91'
>>> s.encode('utf-16')
'xffxfex11b'
>>> s.encode('utf-32')
'xffxfex00x00x11bx00x00'
>>> s.encode('gbk')
'xcexd2'
>>>

我们用unicode()内置函数创建了一个Python中的unicode字符,然后ord()函数可以得到它在Unicode字符集中的编号。Python的unicode对象有一个encode()方法,用来对unicode对像进行编码。

这个示例中的一些知识,在后面会讲到,现在不用深究。这里提下UTF-8编码方式,其它的还没深入研究过,但不妨碍本文的主题。

UTF-8以字节为单位对Unicode编号进行编码。每个字节被转换成一个二位的十六进制数。UTF-8的特点是对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。UTF-8编码的最大长度是4个字节。

Python支持很多的编码方案,包括ascii,utf-8,utf-16,utf32,gbk,gb2312等,完整的列表可以在下面的链接中找到:
http://docs.python.org/2/library/codecs.html#standard-encodings

Python中的字符串

在Python中,str 对象表示所有普通字符串对象,它只能表示ASCII码表中的字符,特点是每个字符占用一个字节,所以也叫做字节字符串(Byte string)。unicode 对象则可以表示所有Unicode字符集中的字符。
s = 'I love python'
u = u'我爱Python'

print isinstance(s, str)
print isinstance(u, unicode)

--输出
True
True

还可以使用 str() 函数 和 unicode() 从一个对象构建字符串,
str(object) 函数返回的结果通常可以通过定义 object 的 str 属性来定制返回的结果。
unicode()函数接受多个参数,与编码格式有关,这在后面会讲到。

本文由金沙官网线上发布于编程,转载请注明出处:Python unicode转义字符u的处理

您可能还会对下面的文章感兴趣: