-
Python 的内置函数 ascii(object) 与 repr() 类似返回一个字符串,表示对象的可打印 ASCII 码形式。非 ASCII 字符会用 \x、\u 和 \U 进行转义。
-
ASCII 是用于信息交换的美国标准代码(American Standard Code )。它是给不同字符和符号的数值,供计算机存储和操作。例如,字母“A”的 ASCII 值为 65。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。ASCII 第一次以规范标准的类型发表是在1967年,最后一次更新则是在 1986 年,到目前为止共定义了 128 个字符。
-
Python 在 2.0 时期变量名仅支持 ASCII 范围内的字符,到了 Python 3.0 时代允许 Unicode 范围作为变量名及名字空间的名称,这对汉语及其其他语法的用户提供了便利,意味着我们在定义变量、函数名、类名等场景下都可以使用汉字串、表情符号、标志符号等。
相关方法
与 ascii() 相关的,Python 还有两个内置函数:
- ord©:给定一个表示一个 Unicode 字符的字符串,返回一个表示该字符的 Unicode 码点的整数。例如 ord(‘a’) 返回整数 97, ord(‘€’) (欧元符号)返回 8364 。
- chr(i):返回表示 Unicode 码位为整数 i 的字符的字符串。例如,chr(97) 返回字符串 ‘a’,chr(8364) 返回字符串 ‘€’。这是 ord() 的逆函数。实参的合法范围是 0 到 1,114,111(16 进制表示是 0x10FFFF)。如果 i 超过这个范围,会触发 ValueError 异常。
要注意的是:
- ord©:c 为一个字符串,返回一个整数,这个整数为 Unicode 码位编号
- chr(i):i 一个整数(有上述范围限制),返回码位编号为这个整数的 Unicode 字符串
它们两个互为逆函数。
Unicode 也是一种为字符提供唯一数字的编码技术。虽然 ASCII 仅编码128个字符,但当前的 Unicode 有来自数百个文字符号系统的 100000 多个字符。
实例
ascii(123)
# '123'
ascii('盖若')
# "'\\u76d6\\u82e5'"
Languages = ['pythØn','C++','Go']
ascii(Languages)
# "['pyth\\xd8n', 'C++', 'Go']"
# 字符
c = 'G'
# ASCII 码
a = 99
print(c, " 的ASCII 码为", ord(c))
print(a, " 对应的字符为", chr(a))
'''
G 的ASCII 码为 71
99 对应的字符为 c
'''
Unicode 和 ASCII 的区别
ASCII编码是1个字节,而Unicode编码通常是2个字节。
字母A用ASCII编码是十进制的65,二进制的01000001;而在Unicode中,只需要在前面补0,即为:00000000 01000001。
新的问题:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
UTF-8 的编码规对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。