Python - Unicode System

What is Unicode System?

Các ứng dụng phần mềm thường yêu cầu hiển thị thông điệp đầu ra bằng nhiều ngôn ngữ khác nhau như tiếng Anh, tiếng Pháp, tiếng Nhật, tiếng Hebrew hoặc tiếng Hindi. Python's string loại này sử dụng Tiêu chuẩn Unicode để đại diện cho các ký tự. Điều này giúp chương trình có thể làm việc với tất cả các ký tự khác nhau này.

Một ký tự là thành phần nhỏ nhất có thể của một văn bản. 'A', 'B', 'C', v.v., đều là những ký tự khác nhau. Cũng như 'È' và 'Í'. Một chuỗi unicode là một chuỗi các điểm mã, là các số từ 0 đến 0x10FFFF (1.114.111 thập phân). Chuỗi các điểm mã này cần được biểu diễn trong bộ nhớ dưới dạng một tập hợp các đơn vị mã, và các đơn vị mã sau đó được ánh xạ thành các byte 8-bit.

Character Encoding

Một chuỗi các điểm mã được biểu diễn trong bộ nhớ dưới dạng một tập hợp các đơn vị mã, được ánh xạ đến các byte 8-bit. Các quy tắc để chuyển đổi một chuỗi Unicode thành một chuỗi byte được gọi là mã hóa ký tự.

Ba loại mã hóa có mặt là UTF-8, UTF-16 và UTF-32. UTF đại diện cho Unicode Transformation Format .

Python's Unicode Support

Python 3.0 trở đi hỗ trợ tích hợp cho Unicode. Kiểu str chứa các ký tự Unicode, do đó bất kỳ chuỗi nào được tạo ra bằng cách sử dụng cú pháp chuỗi đơn, chuỗi kép hoặc chuỗi ba dấu nháy đều được lưu trữ dưới dạng Unicode. Mã hóa mặc định cho mã nguồn Python là UTF-8.

Do đó, chuỗi có thể chứa biểu diễn văn bản của một ký tự Unicode (3/4) hoặc giá trị Unicode của nó (\u00BE).

Example

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

Mã code trên sẽ tạo ra output

3/4
¾

Example

Trong ví dụ sau, một chuỗi '10' được lưu trữ bằng các giá trị Unicode của 1 và 0, đó là \u0031 và \u0030 tương ứng.

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

Nó sẽ tạo ra output

10

Chuỗi (Strings) hiển thị văn bản theo định dạng dễ đọc cho con người, trong khi bytes lưu trữ các ký tự dưới dạng dữ liệu nhị phân. Mã hóa (Encoding) chuyển đổi dữ liệu từ chuỗi ký tự thành một chuỗi byte. Giải mã (Decoding) dịch các byte trở lại thành các ký tự và ký hiệu dễ đọc cho con người. Điều quan trọng là không...

để nhầm lẫn hai phương thức này. encode là một phương thức chuỗi, trong khi decode là một phương thức của đối tượng byte trong Python.

Example

Trong ví dụ sau, chúng ta có một biến chuỗi bao gồm các ký tự ASCII. ASCII là một tập con của bộ ký tự Unicode. Phương thức encode() được sử dụng để chuyển đổi nó thành một đối tượng bytes.

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

Phương thức decode() chuyển đổi đối tượng byte trở lại thành đối tượng str. Phương thức mã hóa được sử dụng là utf-8.

b'Hello'
Hello

Example

Trong ví dụ sau, ký hiệu Rupee (₹) được lưu trữ trong variable bằng giá trị Unicode của nó. Chúng ta chuyển đổi chuỗi thành bytes và sau đó quay lại thành str.

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

Khi bạn thực thi đoạn mã trên, nó sẽ tạo ra output

₹
b'\xe2\x82\xb9'
₹