ASCII&Unicode&UTF-8
- ASCII:1字节
- Unicode:通常2字节
- UTF-8:可变长编码,UTF-8编码把一个Unicode字符编码成1-6字节,常用英文字母编码成1字节,汉字通常3字节,只有很生僻的字符才会编码成4-6字节
编码转换
- ASCII转Unicode:首字节补0
- ASCII转UTF-8:ASCII本身可理解为UTF-8一部分,不需要转
- Unicode转UTF-8:当文本包含大量英文字符时,从内存到外存以节省外存空间,从内存到网络字节流以节省网络带宽
- UTF-8转Unicode:从外存到内存使字符字长固定以提高程序运行性能,从网络字节流到内存使字符字长固定以提高程序运行性能
字符串
ASCII
print 'Horse'
print ord('A')
print chr(65);
output:
Horse
65
A
Unicode
# -*- coding: utf-8 -*-
print u'abc'
print U'xyz'
print u'中文'
print U'动物'
output:
abc
xyz
中文
动物
注:# -*- coding: utf-8 -*-用来告诉python解释器按照UTF-8编码读取python源文件,当然python源文件本身也必须是以UTF-8编码存储的
Unicode和UTF-8转换
Unicode转UTF-8
>>> u'abc'.encode('utf-8')
'abc'
>>> print u'abc'.encode('utf-8')
abc
>>> u'动物'.encode('utf-8')
'\xe5\x8a\xa8\xe7\x89\xa9'
>>> print u'动物'.encode('utf-8')
动物
UTF-8转Unicode
>>> 'abc'.decode('utf-8')
u'abc'
>>> print 'abc'.decode('utf-8')
abc
>>> '\xe5\x8a\xa8\xe7\x89\xa9'.decode('utf-8')
u'\u52a8\u7269'
>>> print '\xe5\x8a\xa8\xe7\x89\xa9'.decode('utf-8')
动物