Chuỗi Unicode được thể hiện như thế nào trong bộ nhớ của Python?Làm thế nào là unicode đại diện nội bộ trong Python?
Ví dụ: tôi có thể hình dung 'abc'
làm byte ASCII tương đương trong Bộ nhớ. Integer có thể được coi là biểu diễn lời khen của 2. Tuy nhiên u'\u2049'
, mặc dù được thể hiện trong UTF-8
là '\xe2\x81\x89'
- dài 3 byte, làm thế nào để tôi hình dung được mã số u'\u2049'
theo nghĩa đen trong bộ nhớ?
Có cách nào được lưu trữ cụ thể trong bộ nhớ không? Python 2 và Python 3 có xử lý nó khác nhau không?
vài câu hỏi liên quan cho bất cứ ai tò mò:
1) How are these strings represented internally in Python interpreter ? I don't understand
2) What is internal representation of string in Python 3.x
Để biết bạn có bản dựng "hẹp" (UCS2) hoặc "rộng" (UCS4) hay không, hãy kiểm tra sys.maxunicode. 65535 có nghĩa là hẹp, 1114111 có nghĩa là rộng. –
Tôi nghĩ về mặt kỹ thuật, đó là UTF-16 hoặc UTF-32, không phải UCS2 hoặc UCS4, vì các cặp thay thế được sử dụng trong các bản dựng hẹp, biến nó thành UTF-16. –
@NedBatchelder: thực sự, không chắc chắn tại sao tài liệu vẫn gắn bó với việc sử dụng UCS. –