Python - Unicode 系统


软件应用程序通常需要显示以不同语言(例如英语、法语、日语、希伯来语或印地语)输出的消息。Python 的字符串类型使用 Unicode 标准来表示字符。它使程序可以处理所有这些不同的可能字符。

字符是文本的最小可能组成部分。“A”、“B”、“C”等都是不同的字符。“È”和“Í”也是如此。unicode 字符串是代码点序列,代码点是从 0 到 0x10FFFF 的数字(十进制 1,114,111)。

字符编码

代码点序列在内存中表示为一组代码单元,映射到 8 位字节。将 Unicode 字符串转换为字节序列的规则称为字符编码。

存在三种类型的编码:UTF-8、UTF-16 和 UTF-32。UTF 代表Unicode 转换格式

Python 的 Unicode 支持

Python 3.0 及以上版本内置了对 Unicode 的支持。str类型包含 Unicode 字符,因此使用单引号、双引号或三引号字符串语法创建的任何字符串都存储为 Unicode Python 源代码的默认编码是 UTF-8。

因此,字符串可能包含 Unicode 字符 (3/4) 或其 Unicode 值 (\u00BE) 的文字表示。

var = "3/4"
print (var)
var = "\u00BE"
print (var)

上面的代码将产生以下输出-

'3/4'
3/4

在以下示例中,使用 Unicode 值 1 和 0(分别为 \u0031 和 u0030)存储字符串“10”。

var = "\u0031\u0030"
print (var)

它将产生以下输出-

10

字符串以人类可读的格式显示文本,字节将字符存储为二进制数据。编码将数据从字符串转换为一系列字节。解码将字节转换回人类可读的字符和符号。重要的是不

混淆这两种方法。编码是字符串方法,而解码是Python字节对象的方法。

在下面的示例中,我们有一个由 ASCII 字符组成的字符串变量。ASCII 是 Unicode 字符集的子集。使用encode()方法将其转换为bytes对象。

string = "Hello"
tobytes = string.encode('utf-8')
print (tobytes)
string = tobytes.decode('utf-8')
print (string)

decode() 方法将 byte 对象转换回 str 对象。使用的编码方式是utf-8。

b'Hello'
Hello

在以下示例中,卢比符号 ($) 使用其 Unicode 值存储在变量中。我们将字符串转换为字节,然后再转换回 str。

string = "\u20B9"
print (string)
tobytes = string.encode('utf-8')
print (tobytes)
string = tobytes.decode('utf-8')
print (string)

当您执行上述代码时,它将产生以下输出-

₹
b'\xe2\x82\xb9'
₹