Unicode¶
u 加上4位16进制的数字表示Unicode 中的 256 个基本语言,前两位为类别,后两位为索引
U 加上8位16进制的数字表示超出上述范围內的字符,最左一位须为0,N{name}用来指定字符名称
完整清单 [1]
转换函数¶
unicodedata模块提供了下面两个方向的转换函数:
lookup() - 接受不区分大小写的标准名称,返回一個Unicode的字符;
name() - 接受一个的Unicode字符,返回大写形式的名称。
实例:
def unicode_test(value):
import unicodedata
name = unicodedata.name(value)
value2 = unicodedata.lookup(name)
print('value="%s", name="%s", value2="%s"' % (value, name, value2))
unicode_test('A') # value="A", name="LATIN CAPITAL LETTER A", value2="A"
unicode_test('$') # value="$", name="DOLLAR SIGN", value2="$"
unicode_test('\u00a2') # value="¢", name="CENT SIGN", value2="¢"
unicode_test('\u20ac') # value="€", name="EURO SIGN", value2="€"
unicode_test('\u2603') # value="☃", name="SNOWMAN", value2="☃"
# 想知道é这个符号的编码
place = 'café'
print(place)
unicode_test('é') # value="é", name="LATIN SMALL LETTER E WITH ACUTE", value2="é"
print('é'.encode('unicode-escape')) # b'\\xe9'
unicode_test('\u00e9') # value="é", name="LATIN SMALL LETTER E WITH ACUTE", value2="é"
使用utf-8进行编码与解码:
将字符串编码为字节
将字节解码为字符串
使用encode()来编码字符串成我们看得懂的:
编码 |
说明 |
---|---|
‘ascii’ |
ASCII 编码 |
‘utf-8’ |
最常用的编码 |
‘latin-1’ |
ISO 8859-1 编码 |
‘cp-1252’ |
Windows 常用编码 |
‘unicode-escape’ |
Python 中 Unicode 的文本格式, uxxxx 或者 Uxxxxxxxx |
#编码:
snowman = '\u2603'
print(snowman) # ☃
print(snowman.encode('unicode-escape')) # b'\\u2603'
print(len(snowman)) # 1
ds = snowman.encode('utf-8')
print(len(ds)) # 3
print(ds) # b'\xe2\x98\x83'
print('☃') # ☃
#解码:
place = 'caf\u00e9'
print(place) # café
place_bytes = place.encode('utf-8')
print(place_bytes) # b'caf\xc3\xa9'
place2 = place_bytes.decode('utf-8')
print(place2) # café