Làm cách nào để thay đổi unicode trong python?

Một chuỗi Unicode được sử dụng để đại diện cho các ký tự trong một hệ thống số. Nếu chúng ta muốn chỉ định một chuỗi Unicode, chúng ta phải đặt ký tự – “u” trước chuỗi

Ví dụ

u"Hello Varun"

Chuyển đổi chuỗi Unicode thành chuỗi bằng cách sử dụng str[]

Ở đây, chúng ta sẽ sử dụng hàm str[] để chuyển chuỗi Unicode thành chuỗi

cú pháp

str[inp_str]

Chỉ cần một tham số

Tham số

Trong đó inp_str là một chuỗi Unicode.
Ví dụ 1.

Trong ví dụ này, chúng tôi sẽ chuyển đổi chuỗi Unicode – u”Welcome to thisPointer” thành một chuỗi bằng cách sử dụng str[]

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]

đầu ra

Converted String:  Welcome to thisPointer

Chuyển đổi chuỗi Unicode thành UTF-8

Ở đây, chúng ta sẽ lấy một chuỗi Unicode và mã hóa nó thành UTF-8 bằng phương thức encode[]. UTF-8 chuyển đổi từng ký tự trong chuỗi Unicode thành 1 đến 4 ký tự. Việc chuyển đổi phụ thuộc vào ký tự

cú pháp

inp_str.encode['UTF-8']

Trong đó inp_str là chuỗi Unicode

Ví dụ

Trong ví dụ này, chúng tôi sẽ chuyển đổi chuỗi Unicode – u”Welcome to thisPointer” thành UTF-8

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

đầu ra

Converted String:  b'Welcome to thisPointer'

Từ chuỗi trên, cần 1 ký tự để chuyển từ Unicode sang UTF-8. Giả sử bạn muốn hoàn nguyên chuỗi Unicode thì bạn có thể sử dụng phương thức decode[]

cú pháp

inp_str.decode['UTF-8']

Ví dụ.
Trong ví dụ này, chúng tôi sẽ chuyển đổi chuỗi Unicode – u”Welcome to thisPointer” thành UTF-8 và giải mã lại thành chuỗi unicode.

________số 8

đầu ra

Converted String:  b'Welcome to thisPointer'
Actual String:  Welcome to thisPointer

Chuyển đổi chuỗi Unicode thành UTF-16

Ở đây, chúng ta sẽ lấy một chuỗi Unicode và mã hóa thành UTF-16 bằng phương thức encode[]. UTF-16 chuyển đổi từng ký tự trong chuỗi Unicode thành hầu hết 2 byte

cú pháp

str[inp_str]
0

Trong đó inp_str là chuỗi Unicode.
Ví dụ.

Trong ví dụ này, chúng tôi sẽ chuyển đổi chuỗi Unicode – u”Welcome to thisPointer” thành UTF-16

str[inp_str]
1

đầu ra

str[inp_str]
2

Từ chuỗi trên trả về 2 byte mỗi ký tự, nếu bạn muốn hoàn nguyên chuỗi Unicode thì có thể dùng phương thức decode[]

cú pháp

str[inp_str]
3

Ví dụ

Trong ví dụ này, chúng tôi sẽ chuyển đổi chuỗi Unicode – u”Welcome to thisPointer” thành UTF-16 và giải mã lại thành chuỗi Unicode

str[inp_str]
4

đầu ra

str[inp_str]
5

Chuyển đổi chuỗi Unicode thành UTF-32

Ở đây, chúng ta sẽ lấy một chuỗi Unicode và mã hóa nó thành UTF-32 bằng phương thức encode[]. UTF-16 chuyển đổi từng ký tự trong chuỗi Unicode thành hầu hết 4 byte

cú pháp

str[inp_str]
6

Trong đó inp_str là chuỗi Unicode

Ví dụ

Trong ví dụ này, chúng tôi sẽ chuyển đổi chuỗi Unicode – u”Welcome to thisPointer” thành UTF-32

str[inp_str]
7

đầu ra

str[inp_str]
8

Từ chuỗi trên trả về 4 byte mỗi ký tự, nếu bạn muốn hoàn nguyên chuỗi Unicode thì có thể dùng phương thức decode[]

cú pháp

str[inp_str]
9

Ví dụ

Trong ví dụ này, chúng tôi sẽ chuyển đổi chuỗi Unicode – u”Welcome to thisPointer” thành UTF-32 và giải mã lại thành chuỗi Unicode

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
0

đầu ra

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
1

Tóm lược

Trong bài viết Chuỗi Python này, chúng ta đã thấy cách chuyển đổi chuỗi Unicode thành chuỗi bằng hàm str[]. Ngoài ra, chúng ta đã thấy cách mã hóa chuỗi thành UTF-8, UTF-16 và UTF-32 bằng encode[] và giải mã chuỗi thành chuỗi Unicode bằng phương thức decode[]. học tập vui vẻ

Xử lý mã hóa ký tự trong Python hoặc bất kỳ ngôn ngữ nào khác đôi khi có vẻ khó khăn. Những nơi như Stack Overflow có hàng nghìn câu hỏi bắt nguồn từ sự nhầm lẫn về các ngoại lệ như

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
26 và
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
27. Hướng dẫn này được thiết kế để xóa sương mù
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
28 và minh họa rằng làm việc với dữ liệu văn bản và nhị phân trong Python 3 có thể là một trải nghiệm mượt mà. Hỗ trợ Unicode của Python rất mạnh mẽ và mạnh mẽ, nhưng phải mất một thời gian để thành thạo

Hướng dẫn này khác biệt bởi vì nó không phải là ngôn ngữ bất khả tri mà thay vào đó, có chủ ý lấy Python làm trung tâm. Bạn vẫn sẽ nhận được phần mở đầu không liên quan đến ngôn ngữ, nhưng sau đó, bạn sẽ đi sâu vào các hình minh họa bằng Python, với các đoạn văn bản nặng được giữ ở mức tối thiểu. Bạn sẽ thấy cách sử dụng các khái niệm mã hóa ký tự trong mã Python trực tiếp

Đến cuối hướng dẫn này, bạn sẽ

  • Nhận tổng quan khái niệm về mã hóa ký tự và hệ thống đánh số
  • Hiểu cách mã hóa phát huy tác dụng với
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    29 và
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    60 của Python
  • Biết về hỗ trợ trong Python cho các hệ thống đánh số thông qua các dạng khác nhau của
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    61 chữ
  • Làm quen với các hàm tích hợp sẵn của Python liên quan đến mã hóa ký tự và hệ thống đánh số

Các hệ thống đánh số và mã hóa ký tự được kết nối chặt chẽ với nhau đến mức chúng cần được đề cập trong cùng một hướng dẫn, nếu không việc xử lý một trong hai sẽ hoàn toàn không thỏa đáng

Ghi chú. Bài viết này là Python 3 trung tâm. Cụ thể, tất cả các ví dụ về mã trong hướng dẫn này được tạo từ một CPython 3. 7. 2 shell, mặc dù tất cả các phiên bản nhỏ của Python 3 sẽ hoạt động [hầu hết] giống nhau trong cách xử lý văn bản của chúng

Nếu bạn vẫn đang sử dụng Python 2 và bị đe dọa bởi sự khác biệt trong cách Python 2 và Python 3 xử lý dữ liệu văn bản và dữ liệu nhị phân, thì hy vọng hướng dẫn này sẽ giúp bạn thực hiện chuyển đổi

Tải xuống miễn phí. Nhận một chương mẫu từ Thủ thuật Python. Cuốn sách chỉ cho bạn các phương pháp hay nhất về Python với các ví dụ đơn giản mà bạn có thể áp dụng ngay lập tức để viết mã Pythonic + đẹp hơn

Mã hóa ký tự là gì?

Có hàng chục nếu không muốn nói là hàng trăm mã hóa ký tự. Cách tốt nhất để bắt đầu hiểu chúng là gì là bao gồm một trong những bảng mã ký tự đơn giản nhất, ASCII

Cho dù bạn là người tự học hay có kiến ​​thức cơ bản về khoa học máy tính, rất có thể bạn đã nhìn thấy bảng ASCII một hoặc hai lần. ASCII là một nơi tốt để bắt đầu tìm hiểu về mã hóa ký tự vì đây là một mã hóa nhỏ và có chứa. [Quá nhỏ, hóa ra. ]

Nó bao gồm những điều sau đây

  • Chữ thường tiếng Anh. từ a đến z
  • Các chữ cái tiếng Anh viết hoa. A đến Z
  • Một số dấu câu và kí hiệu.
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    62 và
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    63, để đặt tên cho một cặp vợ chồng
  • Ký tự khoảng trắng. một không gian thực tế [
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    64], cũng như một dòng mới, xuống dòng, tab ngang, tab dọc và một vài thứ khác
  • Một số ký tự không in được. các ký tự như xóa lùi,
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    65, không thể được in theo nghĩa đen theo cách mà chữ A có thể

Vì vậy, một định nghĩa chính thức hơn về mã hóa ký tự là gì?

Ở cấp độ rất cao, đó là cách dịch các ký tự [chẳng hạn như chữ cái, dấu chấm câu, ký hiệu, khoảng trắng và ký tự điều khiển] sang số nguyên và cuối cùng là bit. Mỗi ký tự có thể được mã hóa thành một chuỗi bit duy nhất. Đừng lo lắng nếu bạn không nắm vững khái niệm về bit, vì chúng ta sẽ sớm tìm hiểu về chúng

Các danh mục khác nhau được phác thảo đại diện cho các nhóm ký tự. Mỗi ký tự đơn có một điểm mã tương ứng mà bạn có thể coi như một số nguyên. Các ký tự được phân đoạn thành các phạm vi khác nhau trong bảng ASCII

Phạm vi điểm mã Lớp từ 0 đến 31Ký tự điều khiển/không in được32 đến 64Dấu câu, ký hiệu, số và khoảng trắng65 đến 90Các chữ cái trong bảng chữ cái tiếng Anh viết hoa91 đến 96Các biểu đồ bổ sung, chẳng hạn như

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
66 và
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
6797 đến 122Các chữ cái trong bảng chữ cái tiếng Anh viết thường123 đến 126Các biểu đồ bổ sung, chẳng hạn như
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
68 và

Toàn bộ bảng ASCII chứa 128 ký tự. Bảng này nắm bắt bộ ký tự hoàn chỉnh mà ASCII cho phép. Nếu bạn không thấy một ký tự ở đây, thì đơn giản là bạn không thể diễn đạt ký tự đó dưới dạng văn bản in theo sơ đồ mã hóa ASCII

Bảng ASCIIHiển thị/Ẩn

Ký tự điểm mã [Tên]Ký tự điểm mã [Tên]0NUL [Không]64

Converted String:  Welcome to thisPointer
611SOH [Bắt đầu tiêu đề]65
Converted String:  Welcome to thisPointer
622STX [Bắt đầu văn bản]66
Converted String:  Welcome to thisPointer
633ETX [Kết thúc văn bản]67
Converted String:  Welcome to thisPointer
644EOT [Kết thúc truyền]68
Converted String:  Welcome to thisPointer
655ENQ [Truy vấn]69
Converted String:  Welcome to thisPointer
666ACK [Xác nhận]70
Converted String:  Welcome to thisPointer
677BEL [Chuông]

Loại bỏ các quảng cáo

Mô-đun
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
645

Mô-đun

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
645 của Python là một điểm dừng thuận tiện cho các hằng chuỗi nằm trong bộ ký tự của ASCII

Đây là cốt lõi của mô-đun trong tất cả vinh quang của nó

str[inp_str]
33

Hầu hết các hằng số này phải tự ghi lại tên định danh của chúng. Chúng tôi sẽ sớm đề cập đến những gì

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
647 và
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
648

Bạn có thể sử dụng các hằng số này để thao tác chuỗi hàng ngày

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
6

Ghi chú.

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
649 bao gồm tất cả
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
650. Điều này hơi khác với một phương pháp khác để kiểm tra xem một ký tự có được coi là có thể in được hay không, cụ thể là
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
651, phương pháp này sẽ cho bạn biết rằng không có ký tự nào trong số
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
652 được coi là có thể in được

Sự khác biệt tinh tế là do định nghĩa.

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
651 coi thứ gì đó có thể in được nếu “tất cả các ký tự của nó được coi là có thể in được trong
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
654. ”

Một chút bồi dưỡng

Bây giờ là thời điểm tốt để ôn lại một chút, đơn vị thông tin cơ bản nhất mà máy tính biết

Một bit là tín hiệu chỉ có hai trạng thái có thể. Có nhiều cách khác nhau để biểu diễn một cách tượng trưng một chút mà tất cả đều có nghĩa giống nhau

  • 0 hoặc 1
  • "có hay không"
  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert unicode string to UTF-8 encoding
    inp_str=inp_str.encode['UTF-8']
    print["Converted String: ", inp_str]
    
    # Convert back
    inp_str=inp_str.decode['UTF-8']
    print["Actual String: ", inp_str]
    
    655 hoặc
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert unicode string to UTF-8 encoding
    inp_str=inp_str.encode['UTF-8']
    print["Converted String: ", inp_str]
    
    # Convert back
    inp_str=inp_str.decode['UTF-8']
    print["Actual String: ", inp_str]
    
    656
  • "bật hoặc tắt"

Bảng ASCII của chúng tôi từ phần trước sử dụng những gì bạn và tôi sẽ gọi là các số [0 đến 127], nhưng những gì được gọi chính xác hơn là các số trong cơ số 10 [thập phân]

Bạn cũng có thể biểu thị từng số trong số cơ số 10 này bằng một chuỗi bit [cơ số 2]. Dưới đây là các phiên bản nhị phân từ 0 đến 10 ở dạng thập phân

Thập phân Nhị phân [Nhỏ gọn]Nhị phân [Dạng đệm]00000000001100000001210000000103110000001141000000010051010000010161100000011071110000011181000000010009010010101010101010101010101010101010101010101010101010101010101010101

Lưu ý rằng khi số thập phân n tăng lên, bạn cần nhiều bit quan trọng hơn để biểu thị ký tự được thiết lập và bao gồm cả số đó

Đây là một cách tiện dụng để biểu diễn các chuỗi ASCII dưới dạng các chuỗi bit trong Python. Mỗi ký tự từ chuỗi ASCII được mã hóa giả thành 8 bit, với các khoảng trắng ở giữa các chuỗi 8 bit, mỗi ký tự đại diện cho một ký tự

>>>

str[inp_str]
45

Ghi chú.

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
657 đã được giới thiệu trong Python 3. 7

Chuỗi f

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
658 sử dụng Ngôn ngữ nhỏ Đặc tả định dạng của Python, đây là cách chỉ định định dạng cho các trường thay thế trong chuỗi định dạng

  • Phía bên trái của dấu hai chấm,

    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert unicode string to UTF-8 encoding
    inp_str=inp_str.encode['UTF-8']
    print["Converted String: ", inp_str]
    
    # Convert back
    inp_str=inp_str.decode['UTF-8']
    print["Actual String: ", inp_str]
    
    659, là đối tượng thực tế có giá trị sẽ được định dạng và chèn vào đầu ra. Sử dụng hàm Python
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert unicode string to UTF-8 encoding
    inp_str=inp_str.encode['UTF-8']
    print["Converted String: ", inp_str]
    
    # Convert back
    inp_str=inp_str.decode['UTF-8']
    print["Actual String: ", inp_str]
    
    660 cung cấp cho bạn điểm mã cơ sở 10 cho một ký tự
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    29

  • Phía bên tay phải của dấu hai chấm là định dạng định dạng.

    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert unicode string to UTF-8 encoding
    inp_str=inp_str.encode['UTF-8']
    print["Converted String: ", inp_str]
    
    # Convert back
    inp_str=inp_str.decode['UTF-8']
    print["Actual String: ", inp_str]
    
    662 có nghĩa là chiều rộng 8, đệm 0 và chức năng của
    Converted String:  b'Welcome to thisPointer'
    
    67 như một dấu hiệu để xuất số kết quả trong cơ số 2 [nhị phân]

Thủ thuật này chủ yếu chỉ để giải trí và nó sẽ thất bại nặng nề đối với bất kỳ ký tự nào mà bạn không thấy có trong bảng ASCII. Chúng ta sẽ thảo luận về cách mã hóa khác khắc phục sự cố này sau

Loại bỏ các quảng cáo

Chúng tôi cần thêm bit

Có một công thức cực kỳ quan trọng liên quan đến định nghĩa của một bit. Cho một số bit, n, số lượng các giá trị riêng biệt có thể có có thể được biểu diễn trong n bit là 2n

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
2

Đây là ý nghĩa của nó

  • 1 bit sẽ cho phép bạn thể hiện 21 == 2 giá trị có thể
  • 8 bit sẽ cho phép bạn thể hiện 28 == 256 giá trị có thể
  • 64 bit sẽ cho phép bạn thể hiện 264 == 18.446.744.073.709.551.616 giá trị có thể

Có một hệ quả tất yếu cho công thức này. được cung cấp một phạm vi các giá trị riêng biệt có thể, làm thế nào chúng ta có thể tìm thấy số bit, n, cần thiết để phạm vi được biểu diễn đầy đủ?

Đây là những gì hiệu quả

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
6

Lý do mà bạn cần sử dụng mức trần trong

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
664 là để tính đến các giá trị không phải là lũy thừa sạch của 2. Giả sử bạn cần lưu trữ một bộ ký tự gồm 110 ký tự. Ngây thơ, điều này sẽ mất _______8665 bit, nhưng không có thứ gọi là 0. 781 bit. 110 giá trị sẽ yêu cầu 7 bit, không phải 6, với các vị trí cuối cùng là không cần thiết

>>>

Converted String:  Welcome to thisPointer
6

Tất cả điều này phục vụ để chứng minh một khái niệm. Nói đúng ra, ASCII là mã 7 bit. Bảng ASCII mà bạn đã thấy ở trên chứa 128 điểm mã và ký tự, bao gồm từ 0 đến 127. Điều này yêu cầu 7 bit

>>>

inp_str.encode['UTF-8']
6

Vấn đề với điều này là các máy tính hiện đại không lưu trữ nhiều thứ trong các khe cắm 7 bit. Chúng lưu lượng theo đơn vị 8 bit, thường được gọi là byte

Ghi chú. Trong suốt hướng dẫn này, tôi giả định rằng một byte đề cập đến 8 bit, như nó đã có từ những năm 1960, chứ không phải là một số đơn vị lưu trữ khác. Bạn có thể gọi đây là một octet nếu bạn thích

Điều này có nghĩa là không gian lưu trữ được sử dụng bởi ASCII trống một nửa. Nếu không rõ tại sao lại như vậy, hãy xem lại bảng thập phân sang nhị phân ở trên. Bạn có thể biểu thị các số 0 và 1 chỉ bằng 1 bit hoặc bạn có thể sử dụng 8 bit để biểu thị chúng lần lượt là 00000000 và 00000001

Bạn có thể biểu thị các số từ 0 đến 3 chỉ bằng 2 bit hoặc 00 đến 11 hoặc bạn có thể sử dụng 8 bit để biểu thị chúng lần lượt là 00000000, 00000001, 00000010 và 00000011. Điểm mã ASCII cao nhất, 127, chỉ yêu cầu 7 bit quan trọng

Khi biết điều này, bạn có thể thấy rằng

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
666 chuyển đổi các chuỗi ASCII thành một biểu diễn byte của
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29, trong đó mỗi ký tự tiêu thụ một byte

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]
6

Việc sử dụng không đúng mức các byte 8 bit của ASCII do các máy tính hiện đại cung cấp đã dẫn đến một nhóm mã hóa không chính thức, xung đột mà mỗi ký tự bổ sung được chỉ định sẽ được sử dụng với 128 điểm mã khả dụng còn lại được cho phép trong sơ đồ mã hóa ký tự 8 bit

Các mã hóa khác nhau này không chỉ xung đột với nhau mà bản thân mỗi mã hóa này vẫn là một đại diện hoàn toàn không hoàn chỉnh của các ký tự trên thế giới, bất kể thực tế là chúng đã sử dụng một bit bổ sung.

Trong những năm qua, một kế hoạch lớn mã hóa một ký tự đã thống trị tất cả. Tuy nhiên, trước khi đến đó, chúng ta hãy nói một chút về các hệ thống đánh số, đây là nền tảng cơ bản của sơ đồ mã hóa ký tự

Loại bỏ các quảng cáo

Bao gồm tất cả các cơ sở. Hệ thống số khác

Trong phần thảo luận về ASCII ở trên, bạn đã thấy rằng mỗi ký tự ánh xạ tới một số nguyên trong khoảng từ 0 đến 127

Phạm vi số này được biểu thị bằng số thập phân [cơ số 10]. Đó là cách mà bạn, tôi và phần còn lại của con người chúng ta đã quen đếm, không có lý do gì phức tạp hơn việc chúng ta có 10 ngón tay

Nhưng cũng có những hệ thống đánh số khác đặc biệt phổ biến trong toàn bộ mã nguồn CPython. Mặc dù “số bên dưới” giống nhau, nhưng tất cả các hệ thống đánh số chỉ là những cách khác nhau để biểu thị cùng một số

Nếu tôi hỏi bạn chuỗi

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
668 đại diện cho số nào, bạn sẽ có lý khi nhìn tôi một cách kỳ lạ trước khi trả lời rằng nó đại diện cho số mười một

Tuy nhiên, biểu diễn chuỗi này có thể biểu thị các số cơ bản khác nhau trong các hệ thống đánh số khác nhau. Ngoài số thập phân, các lựa chọn thay thế bao gồm các hệ thống đánh số phổ biến sau đây

  • nhị phân. cơ sở 2
  • bát phân. cơ sở 8
  • Thập lục phân [hex]. cơ sở 16

Nhưng điều đó có ý nghĩa gì đối với chúng ta khi nói rằng, trong một hệ thống đánh số nhất định, các số được biểu diễn trong cơ số N?

Đây là cách tốt nhất mà tôi biết để nói rõ điều này có nghĩa là gì. đó là số lượng ngón tay mà bạn có thể tin tưởng trong hệ thống đó

Nếu bạn muốn có phần giới thiệu đầy đủ hơn nhưng vẫn nhẹ nhàng về các hệ thống đánh số, Charles Petzold’s Code là một cuốn sách cực kỳ hay, khám phá chi tiết nền tảng của mã máy tính

Một cách để chứng minh cách các hệ thống đánh số khác nhau giải thích cùng một điều là sử dụng hàm tạo

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
669 của Python. Nếu bạn chuyển
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29 đến
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
669, Python sẽ mặc định cho rằng chuỗi biểu thị một số trong cơ số 10 trừ khi bạn nói khác đi

>>>

Converted String:  b'Welcome to thisPointer'
6

Có một cách phổ biến hơn để nói với Python rằng số nguyên của bạn được nhập vào một cơ số khác 10. Python chấp nhận các dạng chữ của mỗi trong số 3 hệ thống đánh số thay thế ở trên

Loại LiteralPrefixVí dụ/an/a

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
672Binary literal
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
673 or
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
674
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
675Boctal literal
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
676 or
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
677
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
678Hex literal
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
679 or
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
680
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
681

Tất cả đều là các dạng con của số nguyên. Bạn có thể thấy rằng những kết quả này tương ứng tạo ra kết quả tương tự như các lệnh gọi tới

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
669 với các giá trị
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
683 không mặc định. Tất cả chúng chỉ là
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
61 đối với Python

>>>

inp_str.decode['UTF-8']
6

Đây là cách bạn có thể nhập số nhị phân, bát phân và thập lục phân tương đương của các số thập phân từ 0 đến 20. Bất kỳ thứ nào trong số này đều hoàn toàn hợp lệ trong trình biên dịch Python hoặc mã nguồn và tất cả đều thuộc loại

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
61

DecimalBinaryOctalHex

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
614
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
687
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
688
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
689
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
616
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
691
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
692
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
693
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
618
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
695
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
696
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
697
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
620
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
675
str[inp_str]
4500
str[inp_str]
4501
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
622
str[inp_str]
4503
str[inp_str]
4504
str[inp_str]
4505
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
624
str[inp_str]
4507
str[inp_str]
4508
str[inp_str]
4509
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
626
str[inp_str]
4511
str[inp_str]
4512
str[inp_str]
4513
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
628
str[inp_str]
4515
str[inp_str]
4516
str[inp_str]
4517
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
630
str[inp_str]
4519
str[inp_str]
4520
str[inp_str]
4521
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
632
str[inp_str]
4523
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
678
str[inp_str]
4525
str[inp_str]
4526
str[inp_str]
4527
str[inp_str]
4528
str[inp_str]
4529
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
672
str[inp_str]
4531
str[inp_str]
4532
str[inp_str]
4533
str[inp_str]
4534
str[inp_str]
4535
str[inp_str]
4536
str[inp_str]
4537
str[inp_str]
4538
str[inp_str]
4539
str[inp_str]
4540
str[inp_str]
4541
str[inp_str]
4542
str[inp_str]
4543
str[inp_str]
4544
str[inp_str]
4545
str[inp_str]
4546
str[inp_str]
4547
str[inp_str]
4548
str[inp_str]
4549
str[inp_str]
4550
str[inp_str]
4551
str[inp_str]
4552
str[inp_str]
4553
str[inp_str]
4554
str[inp_str]
4555
str[inp_str]
4556
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
681
str[inp_str]
4558
str[inp_str]
4559
str[inp_str]
4560
str[inp_str]
4561
str[inp_str]
4562_

Số nguyên trong nguồn CPythonHiển thị/Ẩn

Thật ngạc nhiên là mức độ phổ biến của các biểu thức này trong Thư viện chuẩn Python. Nếu bạn muốn tự mình xem, hãy điều hướng đến bất kỳ vị trí nào trong thư mục

str[inp_str]
4570 của bạn và kiểm tra việc sử dụng các ký tự hex như thế này

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
60

Điều này sẽ hoạt động trên bất kỳ hệ thống Unix nào có

str[inp_str]
4571. Bạn có thể sử dụng
str[inp_str]
4572 để tìm kiếm các ký tự bát phân hoặc “\b0b” để tìm kiếm các ký tự nhị phân

Đối số cho việc sử dụng các cú pháp văn học

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
61 thay thế này là gì? . Ba hệ thống số thay thế này đôi khi đưa ra cách thể hiện các giá trị theo cách thân thiện với máy tính. Ví dụ: số 65536 hoặc 216, chỉ là 10000 ở dạng thập lục phân hoặc
str[inp_str]
4574 ở dạng chữ thập lục phân Python

Loại bỏ các quảng cáo

Nhập Unicode

Như bạn đã thấy, vấn đề với ASCII là nó gần như không phải là một tập hợp các ký tự đủ lớn để phù hợp với tập hợp ngôn ngữ, phương ngữ, ký hiệu và nét chữ của thế giới. [Nó thậm chí không đủ lớn cho riêng tiếng Anh. ]

Unicode về cơ bản phục vụ cùng một mục đích như ASCII, nhưng nó chỉ bao gồm một cách, cách, cách tập hợp các điểm mã lớn hơn. Có một số mã hóa xuất hiện theo trình tự thời gian giữa ASCII và Unicode, nhưng chúng không thực sự đáng được đề cập vì Unicode và một trong các sơ đồ mã hóa của nó, UTF-8, đã được sử dụng chủ yếu.

Hãy nghĩ về Unicode như một phiên bản đồ sộ của bảng ASCII—một phiên bản có 1.114.112 điểm mã có thể. Đó là 0 đến 1,114,111 hoặc 0 đến 17 * [216] - 1 hoặc

str[inp_str]
4575 hệ thập lục phân. Trên thực tế, ASCII là tập hợp con hoàn hảo của Unicode. 128 ký tự đầu tiên trong bảng Unicode tương ứng chính xác với các ký tự ASCII mà bạn mong đợi một cách hợp lý.

Vì lợi ích của việc chính xác về mặt kỹ thuật, bản thân Unicode không phải là một mã hóa. Thay vào đó, Unicode được triển khai bằng các mã hóa ký tự khác nhau mà bạn sẽ sớm thấy. Unicode tốt hơn nên được coi là một bản đồ [giống như một

str[inp_str]
4576] hoặc một bảng cơ sở dữ liệu 2 cột. Nó ánh xạ các ký tự [như
str[inp_str]
4577,
str[inp_str]
4578 hoặc thậm chí là
str[inp_str]
4579] thành các số nguyên dương, khác biệt. Mã hóa ký tự cần cung cấp thêm một chút

Unicode hầu như chứa mọi ký tự mà bạn có thể tưởng tượng, bao gồm cả những ký tự không in được bổ sung. Một trong những mục yêu thích của tôi là dấu từ phải sang trái phiền phức, có mã điểm 8207 và được sử dụng trong văn bản có cả chữ viết từ trái sang phải và từ phải sang trái, chẳng hạn như một bài viết có cả đoạn văn tiếng Anh và tiếng Ả Rập

Ghi chú. Thế giới mã hóa ký tự là một trong nhiều chi tiết kỹ thuật chi tiết mà một số người thích soi mói. Một chi tiết như vậy là chỉ có 1.111.998 điểm mã Unicode thực sự có thể sử dụng được, do một số lý do cổ xưa.

Unicode so với UTF-8

Không mất nhiều thời gian để mọi người nhận ra rằng tất cả các ký tự trên thế giới không thể gói gọn trong một byte. Rõ ràng là các mã hóa hiện đại, toàn diện hơn sẽ cần sử dụng nhiều byte để mã hóa một số ký tự

Ở trên, bạn cũng đã thấy rằng Unicode về mặt kỹ thuật không phải là mã hóa ký tự toàn diện. Tại sao vậy?

Có một điều mà Unicode không nói với bạn. nó không cho bạn biết cách lấy các bit thực tế từ văn bản—chỉ các điểm mã. Nó không cho bạn biết đủ về cách chuyển đổi văn bản thành dữ liệu nhị phân và ngược lại

Unicode là một tiêu chuẩn mã hóa trừu tượng, không phải là một bảng mã. Đó là nơi UTF-8 và các sơ đồ mã hóa khác phát huy tác dụng. Tiêu chuẩn Unicode [bản đồ các ký tự tới các điểm mã] xác định một số mã hóa khác nhau từ bộ ký tự đơn của nó

UTF-8 cũng như những người anh em họ ít được sử dụng hơn của nó, UTF-16 và UTF-32, là các định dạng mã hóa để biểu thị các ký tự Unicode dưới dạng dữ liệu nhị phân của một hoặc nhiều byte trên mỗi ký tự. Chúng ta sẽ thảo luận về UTF-16 và UTF-32 trong giây lát, nhưng UTF-8 đã chiếm thị phần lớn nhất cho đến nay

Điều đó đưa chúng ta đến một định nghĩa đã quá hạn. Chính thức, nó có nghĩa là gì để mã hóa và giải mã?

Mã hóa và giải mã trong Python 3

Loại

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29 của Python 3 có nghĩa là đại diện cho văn bản mà con người có thể đọc được và có thể chứa bất kỳ ký tự Unicode nào

Ngược lại, loại

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
60 đại diện cho dữ liệu nhị phân hoặc chuỗi byte thô, về bản chất không có mã hóa được đính kèm với nó

Mã hóa và giải mã là quá trình đi từ cái này sang cái khác

Mã hóa vs giải mã [Hình ảnh. Trăn thật]

Trong

str[inp_str]
4582 và
str[inp_str]
4583, tham số
str[inp_str]
4584 là
str[inp_str]
4585 theo mặc định, mặc dù việc chỉ định tham số này thường an toàn hơn và rõ ràng hơn

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
61

Kết quả của

str[inp_str]
4586 là một đối tượng
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
60. Cả ký tự byte [chẳng hạn như
str[inp_str]
4588] và biểu diễn byte chỉ cho phép các ký tự ASCII

Đây là lý do tại sao, khi gọi

str[inp_str]
4589,
str[inp_str]
4590 tương thích ASCII được phép biểu diễn như hiện tại, nhưng n với dấu ngã được thoát thành
str[inp_str]
4591. Chuỗi trông lộn xộn đó đại diện cho hai byte,
str[inp_str]
4592 và
str[inp_str]
4593 ở dạng hex

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
62

Nghĩa là, ký tự

str[inp_str]
4594 yêu cầu hai byte để biểu diễn nhị phân theo UTF-8

Ghi chú. Nếu bạn nhập

str[inp_str]
4595, có thể bạn sẽ thấy giá trị mặc định là
str[inp_str]
4596. Hãy cẩn thận khi loại trừ điều này và chỉ sử dụng
str[inp_str]
4597, vì mặc định có thể khác trong Windows trước Python 3. 6

Loại bỏ các quảng cáo

Trăn 3. Tất tay trên Unicode

Python 3 hoàn toàn phù hợp với Unicode và UTF-8 cụ thể. Đây là ý nghĩa của nó

  • Mã nguồn Python 3 được mặc định là UTF-8. Điều này có nghĩa là bạn không cần

    str[inp_str]
    
    4598 ở đầu tệp
    str[inp_str]
    
    4599 trong Python 3

  • Tất cả văn bản [

    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    29] là Unicode theo mặc định. Văn bản Unicode đã mã hóa được biểu diễn dưới dạng dữ liệu nhị phân [
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    60]. Loại
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    29 có thể chứa bất kỳ ký tự Unicode bằng chữ nào, chẳng hạn như
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    203, tất cả sẽ được lưu trữ dưới dạng Unicode

  • Python 3 chấp nhận nhiều điểm mã Unicode trong mã định danh, nghĩa là

    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    204 hợp lệ nếu điều này phù hợp với sở thích của bạn

  • Mô-đun

    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    205 của Python mặc định là cờ
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    206 thay vì
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    207. Điều này có nghĩa là, chẳng hạn,
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    208 khớp với các ký tự từ Unicode, không chỉ các ký tự ASCII

  • str[inp_str]
    
    4584 mặc định trong
    str[inp_str]
    
    4586 và
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    211 là UTF-8

Có một thuộc tính khác có nhiều sắc thái hơn, đó là giá trị mặc định của

str[inp_str]
4584 đối với
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
213 tích hợp phụ thuộc vào nền tảng và phụ thuộc vào giá trị của
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
214

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
63

Một lần nữa, bài học ở đây là hãy cẩn thận khi đưa ra các giả định khi nói đến tính phổ biến của UTF-8, ngay cả khi đó là mã hóa chiếm ưu thế. Rõ ràng trong mã của bạn không bao giờ gây hại

Một byte, hai byte, ba byte, bốn

Một tính năng quan trọng là UTF-8 là mã hóa có độ dài thay đổi. Thật hấp dẫn để tìm hiểu điều này có nghĩa là gì, nhưng nó đáng để đi sâu vào

Nghĩ lại phần về ASCII. Mọi thứ trong vùng đất mở rộng ASCII đều yêu cầu tối đa một byte dung lượng. Bạn có thể nhanh chóng chứng minh điều này bằng biểu thức trình tạo sau

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
64

UTF-8 khá khác biệt. Một ký tự Unicode nhất định có thể chiếm bất kỳ đâu từ một đến bốn byte. Đây là một ví dụ về một ký tự Unicode duy nhất chiếm bốn byte

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
65

Đây là một tính năng tinh tế nhưng quan trọng của

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
215

  • Độ dài của một ký tự Unicode dưới dạng Python
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    29 sẽ luôn là 1, bất kể nó chiếm bao nhiêu byte
  • Độ dài của cùng một ký tự được mã hóa thành
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    60 sẽ nằm trong khoảng từ 1 đến 4

Bảng dưới đây tóm tắt những loại ký tự chung phù hợp với từng nhóm độ dài byte

Phạm vi thập phân Phạm vi Hex Bao gồm những gì Ví dụ0 đến 127

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
218 đến
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
219U. S. ASCII
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
220,
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
221,
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
222,
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
223128 to 2047
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
224 to
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
225Most Latinic alphabets*
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
226,
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
227,
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
228,
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
2292048 to 65535
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
230 to
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
231Additional parts of the multilingual plane [BMP]**
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
232,
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
233,
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
234,
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
23565536 to 1114111
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
236 to
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
237Other***
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
238

*Chẳng hạn như tiếng Anh, tiếng Ả Rập, tiếng Hy Lạp và tiếng Ireland
**Một lượng lớn ngôn ngữ và ký hiệu—chủ yếu là tiếng Trung, tiếng Nhật và tiếng Hàn theo số lượng [cũng như bảng chữ cái ASCII và tiếng Latinh
***Additional Chinese, Japanese, Korean, and Vietnamese characters, plus more symbols and emojis

Ghi chú. Để không đánh mất bức tranh toàn cảnh, có một bộ tính năng kỹ thuật bổ sung của UTF-8 không được đề cập ở đây vì chúng hiếm khi hiển thị đối với người dùng Python

Chẳng hạn, UTF-8 thực sự sử dụng các mã tiền tố cho biết số lượng byte trong một chuỗi. Điều này cho phép bộ giải mã cho biết byte nào thuộc về nhau trong mã hóa có độ dài thay đổi và cho phép byte đầu tiên đóng vai trò là chỉ báo về số lượng byte trong chuỗi tiếp theo

Bài viết UTF-8 của Wikipedia không né tránh các chi tiết kỹ thuật và luôn có Tiêu chuẩn Unicode chính thức để bạn đọc thoải mái.

Thế còn UTF-16 và UTF-32 thì sao?

Hãy quay lại với hai biến thể mã hóa khác, UTF-16 và UTF-32

Sự khác biệt giữa những điều này và UTF-8 là đáng kể trong thực tế. Dưới đây là ví dụ về mức độ khác biệt lớn với chuyển đổi khứ hồi

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
66

Trong trường hợp này, mã hóa bốn chữ cái Hy Lạp bằng UTF-8 và sau đó giải mã trở lại văn bản bằng UTF-16 sẽ tạo ra một văn bản

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29 bằng một ngôn ngữ hoàn toàn khác [tiếng Hàn]

Kết quả sai rõ ràng như thế này có thể xảy ra khi cùng một mã hóa không được sử dụng hai chiều. Hai biến thể giải mã cùng một đối tượng

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
60 có thể tạo ra kết quả thậm chí không cùng ngôn ngữ

Bảng này tóm tắt phạm vi hoặc số byte theo UTF-8, UTF-16 và UTF-32

Mã hóaByte trên mỗi ký tự [Bao gồm]Độ dài thay đổiUTF-81 đến 4CóUTF-162 đến 4CóUTF-324Không

Một khía cạnh gây tò mò khác của họ UTF là UTF-8 không phải lúc nào cũng chiếm ít dung lượng hơn UTF-16. Điều đó có vẻ phản trực giác về mặt toán học, nhưng hoàn toàn có thể

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
67

Lý do cho điều này là các điểm mã trong phạm vi

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
244 đến
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
245 [2048 đến 65535 ở dạng thập phân] chiếm ba byte trong UTF-8 so với chỉ hai byte trong UTF-16

Tôi hoàn toàn không khuyên bạn nên nhảy lên tàu UTF-16, bất kể bạn có hoạt động bằng ngôn ngữ có các ký tự thường nằm trong phạm vi này hay không. Trong số các lý do khác, một trong những lập luận mạnh mẽ để sử dụng UTF-8 là, trong thế giới mã hóa, hòa nhập với đám đông là một ý tưởng tuyệt vời

Chưa kể, đó là năm 2019. bộ nhớ máy tính rẻ, vì vậy việc tiết kiệm 4 byte bằng cách sử dụng UTF-16 được cho là không đáng

Loại bỏ các quảng cáo

Các chức năng tích hợp của Python

Bạn đã vượt qua phần khó khăn. Đã đến lúc sử dụng những gì bạn đã thấy cho đến nay trong Python

Python có một nhóm các hàm tích hợp có liên quan theo một cách nào đó đến các hệ thống đánh số và mã hóa ký tự

  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    246
  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    247
  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    248
  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    249
  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    250
  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert unicode string to UTF-8 encoding
    inp_str=inp_str.encode['UTF-8']
    print["Converted String: ", inp_str]
    
    # Convert back
    inp_str=inp_str.decode['UTF-8']
    print["Actual String: ", inp_str]
    
    669
  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    252
  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert unicode string to UTF-8 encoding
    inp_str=inp_str.encode['UTF-8']
    print["Converted String: ", inp_str]
    
    # Convert back
    inp_str=inp_str.decode['UTF-8']
    print["Actual String: ", inp_str]
    
    660
  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    254

Chúng có thể được nhóm hợp lý với nhau dựa trên mục đích của chúng

  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    246,
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    247,
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    250 và
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    252 là để có được một biểu diễn khác của đầu vào. Mỗi người tạo ra một
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    29. Đầu tiên,
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    246, tạo ra một đại diện duy nhất ASCII của một đối tượng, với các ký tự không phải ASCII được thoát. Ba phần còn lại lần lượt biểu diễn nhị phân, thập lục phân và bát phân của một số nguyên. Đây chỉ là những đại diện, không phải là một thay đổi cơ bản trong đầu vào

  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    248,
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    254 và
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert unicode string to UTF-8 encoding
    inp_str=inp_str.encode['UTF-8']
    print["Converted String: ", inp_str]
    
    # Convert back
    inp_str=inp_str.decode['UTF-8']
    print["Actual String: ", inp_str]
    
    669 là các hàm tạo của lớp cho các loại tương ứng của chúng,
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    60,
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    29 và
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    61. Mỗi người đều đưa ra các cách ép buộc đầu vào vào loại mong muốn. Chẳng hạn, như bạn đã thấy trước đó, trong khi
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    267 có thể phổ biến hơn, bạn cũng có thể thấy
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    268

  • # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert unicode string to UTF-8 encoding
    inp_str=inp_str.encode['UTF-8']
    print["Converted String: ", inp_str]
    
    # Convert back
    inp_str=inp_str.decode['UTF-8']
    print["Actual String: ", inp_str]
    
    660 và
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    249 là nghịch đảo của nhau trong đó hàm
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert unicode string to UTF-8 encoding
    inp_str=inp_str.encode['UTF-8']
    print["Converted String: ", inp_str]
    
    # Convert back
    inp_str=inp_str.decode['UTF-8']
    print["Actual String: ", inp_str]
    
    660 của Python chuyển đổi một ký tự
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    29 thành điểm mã cơ số 10 của nó, trong khi
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    249 thì ngược lại

Dưới đây là một cái nhìn chi tiết hơn về từng chức năng trong số chín chức năng này

FunctionSignatureAcceptsReturn TypePurpose

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
246
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
275Varies
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29ASCII chỉ đại diện cho một đối tượng, với các ký tự không phải ASCII được thoát
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
247
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
278
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
279
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29Biểu diễn nhị phân của một số nguyên, với tiền tố
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
281
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
248
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
283

_______2284

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
285

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
286Varies
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
60Coerce [convert] the input to
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
60, raw binary data
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
249
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
290
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
291

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
292

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
293
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29Convert an integer code point to a single Unicode character
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
250
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
296
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
279
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29Hexadecimal representation of an integer, with the prefix
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
299
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
669
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
601

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
602Varies
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
61Coerce [convert] the input to
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
61
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
252
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
606
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
279
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29Octal representation of an integer, with the prefix
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
609
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
660
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
611
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
612

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
613
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
61Convert a single Unicode character to its integer code point
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
254
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
616

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
617Varies
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29Coerce [convert] the input to
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29, text

Bạn có thể mở rộng phần bên dưới để xem một số ví dụ về từng chức năng

Ví dụ. ascii[]Hiện/Ẩn

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
246 cung cấp cho bạn một biểu diễn chỉ ASCII của một đối tượng, với các ký tự không phải ASCII được thoát

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
68

Ví dụ. bin[]Hiện/Ẩn

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
247 cung cấp cho bạn biểu diễn nhị phân của một số nguyên, với tiền tố
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
281

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
69

Ví dụ. bytes[]Hiện/Ẩn

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
248 buộc đầu vào thành
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
60, đại diện cho dữ liệu nhị phân thô

>>>

str[inp_str]
450

Ví dụ. chr[]Hiện/Ẩn

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
249 chuyển đổi một điểm mã số nguyên thành một ký tự Unicode

>>>

str[inp_str]
451

Ví dụ. hex[]Hiện/Ẩn

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
250 đưa ra biểu diễn thập lục phân của một số nguyên, với tiền tố
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
299

>>>

str[inp_str]
452

Ví dụ. int[]Hiện/Ẩn

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
669 ép buộc đầu vào thành
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
61, tùy ý diễn giải đầu vào trong một cơ sở nhất định

>>>

str[inp_str]
453

Ví dụ. ord[]Hiện/Ẩn

Hàm Python

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert unicode string to UTF-8 encoding
inp_str=inp_str.encode['UTF-8']
print["Converted String: ", inp_str]

# Convert back
inp_str=inp_str.decode['UTF-8']
print["Actual String: ", inp_str]
660 chuyển đổi một ký tự Unicode thành điểm mã số nguyên của nó

>>>

str[inp_str]
454

Ví dụ. str[]Hiện/Ẩn

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
254 buộc đầu vào thành
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29, đại diện cho văn bản

>>>

str[inp_str]
455

Chuỗi ký tự Python. Cách để lột da một con mèo

Thay vì sử dụng hàm tạo

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
254, thông thường bạn sẽ nhập một số
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29 theo nghĩa đen

>>>

str[inp_str]
456

Điều đó có vẻ đủ dễ dàng. Nhưng khía cạnh thú vị của mọi thứ là vì Python 3 hoàn toàn lấy Unicode làm trung tâm, bạn có thể “gõ” các ký tự Unicode mà bạn có thể sẽ không tìm thấy trên bàn phím của mình. Bạn có thể sao chép và dán quyền này vào trình thông dịch viên Python 3

>>>

str[inp_str]
457

Bên cạnh việc đặt các ký tự Unicode thực tế, không thoát trong bảng điều khiển, còn có nhiều cách khác để nhập chuỗi Unicode

Một trong những phần dày đặc nhất của tài liệu Python là phần về phân tích từ vựng, cụ thể là phần về chuỗi ký tự và byte. Cá nhân tôi đã phải đọc phần này khoảng một, hai hoặc có thể chín lần để nó thực sự thấm nhuần.

Một phần của những gì nó nói là có tới sáu cách mà Python sẽ cho phép bạn nhập cùng một ký tự Unicode

Cách đầu tiên và phổ biến nhất là nhập ký tự theo nghĩa đen, như bạn đã thấy. Phần khó khăn với phương pháp này là tìm các tổ hợp phím thực tế. Đó là nơi các phương pháp khác để nhận và đại diện cho các ký tự phát huy tác dụng. Đây là danh sách đầy đủ

Chuỗi thoát Ý nghĩa Cách thể hiện

str[inp_str]
4577
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
636Ký tự có giá trị bát phân _______2637
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
638
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
639Ký tự có giá trị hex 16-bit [2-byte]
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
641
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
642Ký tự có tên
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
643 trong cơ sở dữ liệu Unicode
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
644
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
645Ký tự có giá trị hex 16 bit [2 byte]

Đây là một số bằng chứng và xác nhận ở trên

>>>

str[inp_str]
458

Bây giờ, có hai lưu ý chính

  1. Không phải tất cả các biểu mẫu này đều phù hợp với tất cả các ký tự. Biểu diễn hex của số nguyên 300 là

    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    651, đơn giản là sẽ không khớp với mã thoát 2 chữ số hex
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    639. Điểm mã cao nhất mà bạn có thể đưa vào chuỗi thoát này là
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    653 [
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    654]. Tương tự như vậy đối với
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    636, nó sẽ chỉ hoạt động đến
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    656 [
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    657]

  2. Đối với

    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    658,
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    659 và
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    660, số lượng chữ số được yêu cầu chính xác như được hiển thị trong các ví dụ này. Điều này có thể khiến bạn bối rối vì cách mà các bảng Unicode thường hiển thị mã cho các ký tự, với
    # Consider the unicode string
    inp_str= u"Welcome to thisPointer"
    
    # Convert to string
    print["Converted String: ",str[inp_str]]
    
    661 ở đầu và số lượng ký tự hex có thể thay đổi. Điều quan trọng là các bảng Unicode thường không đệm các mã này

Chẳng hạn, nếu bạn tham khảo bảng unicode. com để biết thông tin về chữ cái Gothic faihu [hoặc fehu],

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
662, bạn sẽ thấy rằng nó được liệt kê là có mã
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
663

Làm thế nào để bạn đặt điều này vào

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
645 hoặc
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
648?

>>>

str[inp_str]
459

Điều này cũng có nghĩa là biểu mẫu

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
648 là chuỗi thoát duy nhất có khả năng chứa bất kỳ ký tự Unicode nào

Ghi chú. Đây là một hàm ngắn để chuyển đổi các chuỗi trông giống như

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
669 thành một thứ mà Python có thể làm việc với. Nó sử dụng
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
670

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
20

Loại bỏ các quảng cáo

Mã hóa khác có sẵn trong Python

Cho đến nay, bạn đã thấy bốn mã hóa ký tự

  1. ASCII
  2. UTF-8
  3. UTF-16
  4. UTF-32

Có rất nhiều cái khác ngoài kia

Một ví dụ là Latin-1 [còn được gọi là ISO-8859-1], về mặt kỹ thuật là mặc định cho Giao thức truyền siêu văn bản [HTTP], theo RFC 2616. Windows có biến thể Latin-1 của riêng mình được gọi là cp1252

Ghi chú. ISO-8859-1 vẫn còn rất nhiều trong tự nhiên. Thư viện

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
671 tuân theo RFC 2616 “đến từng chữ cái” trong việc sử dụng nó làm mã hóa mặc định cho nội dung của phản hồi HTTP hoặc HTTPS. Nếu từ "văn bản" được tìm thấy trong tiêu đề
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
672 và không có mã hóa nào khác được chỉ định, thì
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
671 sẽ sử dụng ISO-8859-1

Danh sách đầy đủ các mã hóa được chấp nhận nằm trong tài liệu dành cho mô-đun

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
674, là một phần của Thư viện chuẩn của Python

Có một mã hóa được công nhận hữu ích khác cần lưu ý, đó là

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
675. Nếu bạn có một
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
29 đã được giải mã và muốn nhanh chóng nhận được một biểu diễn theo nghĩa đen Unicode đã thoát của nó, thì bạn có thể chỉ định mã hóa này trong
str[inp_str]
4582

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
21

Bạn biết họ nói gì về giả định…

Chỉ vì Python đưa ra giả định mã hóa UTF-8 cho các tệp và mã mà bạn tạo không có nghĩa là bạn, lập trình viên, nên hoạt động với cùng một giả định đối với dữ liệu ngoài

Hãy nói điều đó một lần nữa bởi vì đó là một quy tắc để sống theo. khi bạn nhận được dữ liệu nhị phân [byte] từ nguồn của bên thứ ba, cho dù đó là từ tệp hay qua mạng, cách tốt nhất là kiểm tra xem dữ liệu đó có chỉ định mã hóa không. Nếu không, thì bạn phải hỏi

Tất cả I/O xảy ra theo byte, không phải văn bản và byte chỉ là số 1 và số 0 đối với máy tính cho đến khi bạn thông báo cho máy tính biết cách khác bằng cách thông báo mã hóa cho máy tính

Đây là một ví dụ về nơi mọi thứ có thể đi sai. Bạn đã đăng ký một API gửi cho bạn công thức nấu ăn trong ngày mà bạn nhận được trong

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
60 và luôn giải mã bằng cách sử dụng
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
679 mà không gặp vấn đề gì. Vào ngày đặc biệt này, một phần của công thức trông như thế này

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
22

Có vẻ như công thức yêu cầu một ít bột mì, nhưng chúng tôi không biết bao nhiêu

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
23

ồ ồ. Có một

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
26 phiền phức có thể cắn bạn khi bạn đưa ra các giả định về mã hóa. Bạn kiểm tra với máy chủ API. Xin thưa, dữ liệu thực sự được gửi qua mã hóa bằng tiếng Latin-1

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
24

chúng ta đi thôi. Trong Latin-1, mỗi ký tự khớp với một byte đơn, trong khi ký tự “¼” chiếm hai byte trong UTF-8 [_______2681]

Bài học ở đây là có thể nguy hiểm khi giả sử mã hóa bất kỳ dữ liệu nào được chuyển cho bạn. Ngày nay, nó thường là UTF-8, nhưng đó là một tỷ lệ nhỏ các trường hợp mà nó không làm nổ tung mọi thứ

Nếu bạn thực sự cần phải từ bỏ con tàu và đoán mã hóa, thì hãy xem thư viện

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
682, sử dụng phương pháp từ Mozilla để đưa ra dự đoán có cơ sở về văn bản được mã hóa mơ hồ. Điều đó nói rằng, một công cụ như
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
682 nên là giải pháp cuối cùng của bạn, không phải là đầu tiên của bạn

Loại bỏ các quảng cáo

Vụn vặt.
# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
684

Chúng tôi sẽ thiếu sót nếu không đề cập đến

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
684 từ Thư viện chuẩn Python, cho phép bạn tương tác và tra cứu trên Cơ sở dữ liệu ký tự Unicode [UCD]

>>>

# Consider the unicode string
inp_str= u"Welcome to thisPointer"

# Convert to string
print["Converted String: ",str[inp_str]]
25

kết thúc

Trong bài viết này, bạn đã giải mã chủ đề rộng lớn và ấn tượng của mã hóa ký tự trong Python

Bạn đã bao phủ rất nhiều nền tảng ở đây

  • Các khái niệm cơ bản về mã hóa ký tự và hệ thống đánh số
  • Số nguyên, nhị phân, bát phân, hex, str và byte trong Python
  • Các chức năng tích hợp sẵn của Python liên quan đến hệ thống mã hóa và đánh số ký tự
  • Xử lý văn bản so với dữ liệu nhị phân của Python 3

Bây giờ, hãy tiếp tục và mã hóa

Tài nguyên

Để biết thêm chi tiết về các chủ đề được đề cập ở đây, hãy xem các tài nguyên này

  • Joel Spolsky. Mức tối thiểu tuyệt đối mà mọi nhà phát triển phần mềm hoàn toàn phải biết về Unicode và bộ ký tự [Không có lý do gì. ]
  • David Zentgraf. Điều mà mọi lập trình viên hoàn toàn cần biết về mã hóa và bộ ký tự để làm việc với văn bản
  • mozilla. Một cách tiếp cận tổng hợp để phát hiện ngôn ngữ/mã hóa
  • Wikipedia. UTF-8
  • John Skeet. Unicode và. BỌC LƯỚI
  • Charles Petzold. Mã số. Ngôn ngữ ẩn của phần cứng và phần mềm máy tính
  • Nhóm làm việc về mạng, RFC 3629. UTF-8, định dạng chuyển đổi của ISO 10646
  • Chuẩn kỹ thuật Unicode #18. Biểu thức chính quy Unicode

Tài liệu Python có hai trang về chủ đề này

  • Có gì mới trong Python 3. 0
  • HƯỚNG DẪN Unicode

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Unicode trong Python. Làm việc với mã hóa ký tự

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Brad Solomon

Brad là một kỹ sư phần mềm và là thành viên của Nhóm hướng dẫn Python thực sự

» Thông tin thêm về Brad

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Alex

Aldren

Joanna

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Chủ Đề