Python - Hệ Thống Unicode

Chào bạn tương lai, các nhà phép Python! Hôm nay, chúng ta sẽ bắt đầu hành trình thú vị vào thế giới Unicode trong Python. Đừng lo nếu bạn chưa từng nghe về Unicode - bằng cách kết thúc hướng dẫn này, bạn sẽ xử lý văn bản như một chuyên gia!

Python - Unicode System

Định nghĩa Hệ Thống Unicode

Hãy tưởng tượng bạn đang cố gắng viết thư cho người bạn thư ở Nhật Bản, nhưng bàn phím của bạn chỉ có chữ cái tiếng Anh. Tuyệt vọng phải không? Đây là nơi Unicode đến gần giúp đỡ!

Unicode giống như một từ điển lớn gán một số duy nhất (được gọi là điểm mã) cho mỗi ký tự trong mọi hệ thống chữ của thế giới. Nó không chỉ liên quan đến chữ cái và số - nó bao gồm dấu câu, ký hiệu và thậm chí là biểu tượng cảm xúc! ?

Ví dụ:

  • Chữ 'A' có điểm mã U+0041
  • Ký hiệu '©' có điểm mã U+00A9
  • Biểu tượng cảm xúc '?' có điểm mã U+1F60A

Tại sao chúng ta cần Unicode?

Trước Unicode, các hệ thống mã hóa khác nhau được sử dụng cho các ngôn ngữ khác nhau, điều này thường dẫn đến sự nhầm lẫn và lỗi khi chia sẻ dữ liệu giữa các hệ thống máy tính khác nhau. Unicode giải quyết vấn đề này bằng cách cung cấp một tiêu chuẩn thế giới.

Mã Hóa Ký Tự

Bây giờ khi chúng ta hiểu rõ về Unicode, hãy nói về quá trình mã hóa ký tự. Hãy nghĩ về nó như quá trình dịch chuyển các điểm mã Unicode thành một định dạng mà máy tính có thể lưu trữ và xử lý.

UTF-8: Mã Hóa Thường Dùng Nhất

UTF-8 là hệ thống mã hóa được sử dụng nhiều nhất. Nó giống như một hệ thống đóng gói thông minh có thể đại diện cho tất cả các ký tự Unicode trong khi tương thích ngược với ASCII (một hệ thống mã hóa cũ hơn).

Hãy xem Python xử lý UTF-8 như thế nào:

# Mã hóa một chuỗi thành UTF-8
text = "Hello, 世界!"
encoded_text = text.encode('utf-8')
print(encoded_text)  # b'Hello, \xe4\xb8\x96\xe7\x95\x8c!'

# Giải mã UTF-8 trở lại thành chuỗi
decoded_text = encoded_text.decode('utf-8')
print(decoded_text)  # Hello, 世界!

Trong ví dụ này, chúng ta đầu tiên mã hóa chuỗi đa ngôn ngữ của mình thành UTF-8. Dấu b trong kết quả cho biết nó là một đối tượng bytes. Khi chúng ta giải mã lại, chúng ta nhận được chuỗi gốc của mình.

Hỗ Trợ Unicode của Python

Một trong những điểm tuyệt vời của Python là khả năng hỗ trợ Unicode tuyệt vời. Trong Python 3, tất cả các chuỗi đều là Unicode theo mặc định. Điều này có nghĩa là bạn có thể tự do kết hợp các ký tự từ các ngôn ngữ khác nhau mà không cần xử lý đặc biệt!

Tạo Chuỗi Unicode

# Chuỗi Unicode đơn giản
hello_world = "Hello, 世界!"
print(hello_world)  # Hello, 世界!

# Sử dụng các chuỗi thoát Unicode
smiley = "\U0001F60A"
print(smiley)  # ?

Trong ví dụ thứ hai, chúng ta sử dụng một chuỗi thoát Unicode để đại diện cho biểu tượng cảm xúc. Dấu \U cho Python biết rằng điều theo là một điểm mã Unicode.

Làm việc với Unicode trong Python

Hãy khám phá một số thao tác Unicode khác:

# Lấy điểm mã Unicode của một ký tự
print(ord('A'))  # 65
print(ord('世'))  # 19990

# Lấy một ký tự từ điểm mã Unicode
print(chr(65))  # A
print(chr(19990))  # 世

# Độ dài chuỗi
mixed_string = "Hello, 世界!"
print(len(mixed_string))  # 9 (Lưu ý: 世 và 界 được tính là một ký tự duy nhất)

Hàm ord() cung cấp cho chúng ta điểm mã Unicode của một ký tự, trong khi chr() là ngược lại. Lưu ý rằng len() đúng tính các ký tự tiếng Trung là một đơn vị.

Xử lý Unicode trong Các Tệp

Khi làm việc với các tệp chứa văn bản Unicode, luôn nhớ chỉ định mã hóa:

# Ghi Unicode vào tệp
with open('unicode_file.txt', 'w', encoding='utf-8') as f:
f.write("Hello, 世界!")

# Đọc Unicode từ tệp
with open('unicode_file.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content)  # Hello, 世界!

Bằng cách chỉ định encoding='utf-8', chúng ta đảm bảo rằng văn bản Unicode của chúng ta được ghi và đọc chính xác từ tệp.

Các Phương Thức Unicode trong Python

Python cung cấp một số phương thức hữu ích để làm việc với các chuỗi Unicode. Dưới đây là bảng tóm tắt một số của chúng:

Phương thức Mô tả Ví dụ
isalpha() Trả về True nếu tất cả các ký tự trong chuỗi đều là chữ cái "Hello".isalpha() # True
isnumeric() Trả về True nếu tất cả các ký tự trong chuỗi đều là số "123".isnumeric() # True
isalnum() Trả về True nếu tất cả các ký tự trong chuỗi đều là chữ cái hoặc số "Hello123".isalnum() # True
islower() Trả về True nếu tất cả các ký tự có dạng chữ trong chuỗi đều là chữ thường "hello".islower() # True
isupper() Trả về True nếu tất cả các ký tự có dạng chữ trong chuỗi đều là chữ hoa "HELLO".isupper() # True
istitle() Trả về True nếu chuỗi là tiêu đề "Hello World".istitle() # True

Những phương thức này rất hữu ích khi bạn cần kiểm tra hoặc phân loại các chuỗi Unicode.

Kết Luận

Chúc mừng! Bạn vừa bước ra những bước đầu tiên vào thế giới thú vị của Unicode trong Python. Nhớ rằng, xử lý văn bản từ các ngôn ngữ và hệ thống khác nhau là kỹ năng quan trọng trong thế giới kết nối của chúng ta, và Python làm cho điều đó trở nên dễ dàng.

Khi bạn tiếp tục hành trình Python của mình, bạn sẽ thấy rằng hiểu biết về Unicode sẽ rất hữu ích trong nhiều tình huống, từ việc scraping web đến phân tích dữ liệu và nhiều hơn nữa. Hãy tiếp tục tập luyện, và sớm nhất bạn sẽ nắm vững emojis và các chữ viết đặc sắc như một nhà phép Python thực sự! ?✨

Credits: Image by storyset