Lập trình mạng Python: client – server (phần 14)

Mã hoá và giải mã (tiếp tục)

Hai hoạt động này được bộc lộ hoàn toàn đơn giản và rõ ràng trong Python 3 như một
phương thức decode() cái bạn có thể áp dụng đối với các byte strings sau khi đọc chúng
và như phương thức encode() cái bạn có thể gọi trên các chuỗi kí tự khi bạn đã sẵn sàng
viết chúng quay trở ra. Các kĩ thuật được minh hoạ trong phần code dưới đây:

Decoding Input Bytes and Encoding Characters for Output
#!/usr/bin/env python3
# Foundations of Python Network Programming, Third Edition
# https://github.com/brandon-rhodes/fopnp/blob/m/py3/chapter01/stringcodes.py
if __name__ == ‘__main__’:
# Translating from the outside world of bytes to Unicode characters.
input_bytes = b’\xff\xfe4\x001\x003\x00 \x00i\x00s\x00 \x00i\x00n\x00.\x00′
input_characters = input_bytes.decode(‘utf-16’)
print(repr(input_characters))
# Translating characters back into bytes before sending them.
output_characters = ‘We copy you down, Eagle.\n’
output_bytes = output_characters.encode(‘utf-8’)
with open(‘eagle.txt’, ‘wb’) as f:
f.write(output_bytes)

Các ví dụ trong các học phần cố gắng phân biệt cẩn thận giữa các bytes và kí tự. Chú ý rằng cả
hai có diện mạo khác nhau khi bạn hiển thị repr() của chúng: các byte strings bắt đầu với chữ b
trông như b’Hello’, trong khi các chuỗi kí tự full-fledged không có kí tự ban đầu và đơn giản trông
như ‘world’. Để thử ngăn chặn sự nhầm lẫn giữa các byte strings và các chuỗi kí tự, Python 3 cung cấp
hầu hết string methods chỉ trên dạng chuỗi kí tự.

Chia sẻ

Leave a Reply

Your email address will not be published. Required fields are marked *