Trong học máy, chúng tôi thường xử lý các tập dữ liệu chứa nhiều nhãn trong một hoặc nhiều cột. Các nhãn này có thể ở dạng từ hoặc số. Để làm cho dữ liệu dễ hiểu hoặc ở dạng con người có thể đọc được, dữ liệu huấn luyện thường được gắn nhãn bằng từ.
Mã hóa nhãn đề cập đến việc chuyển đổi nhãn thành dạng số để chuyển đổi chúng thành dạng có thể đọc được bằng máy. Sau đó, các thuật toán học máy có thể quyết định theo cách tốt hơn về cách các nhãn đó phải được vận hành. Đây là bước tiền xử lý quan trọng đối với tập dữ liệu có cấu trúc trong học có giám sát
Ví dụ.
Giả sử chúng ta có một cột Chiều cao trong tập dữ liệu nào đó.
Sau khi áp dụng mã hóa nhãn, cột Chiều cao được chuyển thành.
trong đó 0 là nhãn cho chiều cao, 1 là nhãn cho chiều cao trung bình và 2 là nhãn cho chiều cao thấp
Chúng tôi áp dụng Mã hóa nhãn trên tập dữ liệu mống mắt trên cột mục tiêu là Loài. Nó chứa ba loài Iris-setosa, Iris-versicolor, Iris-virginica.
Mô-đun này xác định các lớp cơ sở cho codec Python tiêu chuẩn [bộ mã hóa và giải mã] và cung cấp quyền truy cập vào sổ đăng ký codec Python nội bộ, quản lý quá trình tra cứu codec và xử lý lỗi. Hầu hết các codec tiêu chuẩn là , mã hóa văn bản thành byte [và giải mã byte thành văn bản], nhưng cũng có những codec được cung cấp để mã hóa văn bản thành văn bản và byte thành byte. Codec tùy chỉnh có thể mã hóa và giải mã giữa các loại tùy ý, nhưng một số tính năng mô-đun bị hạn chế sử dụng riêng với hoặc với codec mã hóa thành
Mô-đun xác định các chức năng sau để mã hóa và giải mã với bất kỳ codec nào
codec. mã hóa[obj , mã hóa='utf-8' , lỗi='nghiêm ngặt']Mã hóa obj bằng codec đã đăng ký để mã hóa
Lỗi có thể được đưa ra để thiết lập sơ đồ xử lý lỗi mong muốn. Trình xử lý lỗi mặc định là 'strict'
có nghĩa là các lỗi mã hóa tăng lên [hoặc một lớp con cụ thể hơn của codec, chẳng hạn như]. Tham khảo để biết thêm thông tin về xử lý lỗi codec
Giải mã obj bằng codec đã đăng ký để mã hóa
Lỗi có thể được đưa ra để thiết lập sơ đồ xử lý lỗi mong muốn. Trình xử lý lỗi mặc định là 'strict'
có nghĩa là các lỗi giải mã tăng lên [hoặc một lớp con cụ thể hơn của codec, chẳng hạn như ]. Tham khảo để biết thêm thông tin về xử lý lỗi codec
Chi tiết đầy đủ cho từng codec cũng có thể được tra cứu trực tiếp
codec. tra cứu[mã hóa]Tra cứu thông tin codec trong sổ đăng ký codec Python và trả về một đối tượng như được định nghĩa bên dưới
Mã hóa được tra cứu đầu tiên trong bộ đệm của sổ đăng ký. Nếu không tìm thấy, danh sách các chức năng tìm kiếm đã đăng ký sẽ được quét. Nếu không tìm thấy đối tượng, a được nâng lên. Mặt khác, đối tượng được lưu trữ trong bộ đệm và được trả lại cho người gọi
lớp codec. CodecInfo[mã hóa , giải mã , trình đọc dòng=Không , streamwriter=Không có , bộ mã hóa gia tăng=Không có , incrementaldecoder=Không có , tên=Không có]Chi tiết codec khi tra cứu sổ đăng ký codec. Các đối số hàm tạo được lưu trữ trong các thuộc tính cùng tên
TênTên mã hóa
mã hóagiải mãChức năng mã hóa và giải mã phi trạng thái. Đây phải là các hàm hoặc phương thức có cùng giao diện với và các phương thức của phiên bản Codec [xem phần ]. Các chức năng hoặc phương pháp dự kiến sẽ hoạt động ở chế độ không trạng thái
bộ mã hóa gia tăngbộ giải mã gia tăngCác lớp bộ mã hóa và giải mã gia tăng hoặc các chức năng xuất xưởng. Chúng phải cung cấp giao diện được xác định bởi các lớp cơ sở và , tương ứng. Các codec gia tăng có thể duy trì trạng thái
trình ghi luồngtrình đọc luồngCác lớp trình ghi và trình đọc luồng hoặc các chức năng của nhà máy. Chúng phải cung cấp giao diện được xác định bởi các lớp cơ sở và , tương ứng. Stream codec có thể duy trì trạng thái
Để đơn giản hóa việc truy cập vào các thành phần codec khác nhau, mô-đun cung cấp các chức năng bổ sung này sử dụng cho tra cứu codec
codec. getencoder[mã hóa]Tra cứu codec cho mã hóa đã cho và trả về chức năng mã hóa của nó
Tăng a trong trường hợp không tìm thấy mã hóa
codec. getdecoder[mã hóa]Tra cứu codec cho mã hóa đã cho và trả về chức năng giải mã của nó
Tăng a trong trường hợp không tìm thấy mã hóa
codec. getincrementalencoder[mã hóa]Tra cứu codec cho mã hóa đã cho và trả về lớp bộ mã hóa gia tăng hoặc chức năng xuất xưởng của nó
Tăng a trong trường hợp không tìm thấy mã hóa hoặc codec không hỗ trợ bộ mã hóa gia tăng
codec. getincrementaldecoder[mã hóa]Tra cứu codec cho mã hóa đã cho và trả về lớp bộ giải mã gia tăng hoặc chức năng xuất xưởng của nó
Tăng a trong trường hợp không tìm thấy mã hóa hoặc codec không hỗ trợ bộ giải mã gia tăng
codec. getreader[mã hóa]Tra cứu codec cho mã hóa đã cho và trả về lớp hoặc chức năng xuất xưởng của nó
Tăng a trong trường hợp không tìm thấy mã hóa
codec. getwriter[mã hóa]Tra cứu codec cho mã hóa đã cho và trả về lớp hoặc chức năng xuất xưởng của nó
Tăng a trong trường hợp không tìm thấy mã hóa
Codec tùy chỉnh được cung cấp bằng cách đăng ký chức năng tìm kiếm codec phù hợp
codec. đăng ký[hàm tìm kiếm]Đăng ký chức năng tìm kiếm codec. Các hàm tìm kiếm được mong đợi nhận một đối số, là tên mã hóa bằng tất cả các chữ cái viết thường có dấu gạch nối và dấu cách được chuyển đổi thành dấu gạch dưới và trả về một đối tượng. Trong trường hợp một chức năng tìm kiếm không thể tìm thấy một mã hóa nhất định, nó sẽ trả về bytes
9
Đã thay đổi trong phiên bản 3. 9. Dấu gạch ngang và dấu cách được chuyển đổi thành dấu gạch dưới.
codec. hủy đăng ký[hàm tìm kiếm]Hủy đăng ký chức năng tìm kiếm codec và xóa bộ đệm của sổ đăng ký. Nếu chức năng tìm kiếm chưa được đăng ký, không làm gì cả
Mới trong phiên bản 3. 10
Mặc dù nội trang và mô-đun được liên kết là phương pháp được khuyến nghị để làm việc với các tệp văn bản được mã hóa, mô-đun này cung cấp các hàm và lớp tiện ích bổ sung cho phép sử dụng nhiều loại codec hơn khi làm việc với các tệp nhị phân
codec. mở[tên tệp , chế độ='r' , mã hóa=Không có , lỗi='strict' , đệm=- 1]Mở tệp được mã hóa bằng chế độ đã cho và trả về một phiên bản của , cung cấp mã hóa/giải mã minh bạch. Chế độ tệp mặc định là 'strict'
3, nghĩa là mở tệp ở chế độ đọc
Ghi chú
Nếu mã hóa không phải là bytes
9, thì các tệp được mã hóa cơ bản luôn được mở ở chế độ nhị phân. Không có chuyển đổi tự động của 'strict'
5 được thực hiện trên đọc và viết. Đối số chế độ có thể là bất kỳ chế độ nhị phân nào được hàm tích hợp sẵn chấp nhận;
mã hóa chỉ định mã hóa sẽ được sử dụng cho tệp. Bất kỳ mã hóa nào mã hóa và giải mã từ byte đều được cho phép và các loại dữ liệu được hỗ trợ bởi các phương thức tệp phụ thuộc vào codec được sử dụng
lỗi có thể được đưa ra để xác định việc xử lý lỗi. Nó mặc định là 'strict'
khiến a được nâng lên trong trường hợp xảy ra lỗi mã hóa
đệm có ý nghĩa tương tự như đối với chức năng tích hợp. Nó mặc định là -1 có nghĩa là kích thước bộ đệm mặc định sẽ được sử dụng
Đã thay đổi trong phiên bản 3. 11. Chế độ ValueError
1 đã bị xóa.
Trả về một phiên bản, một phiên bản được gói của tệp cung cấp khả năng chuyển mã trong suốt. Tệp gốc bị đóng khi đóng phiên bản được gói
Dữ liệu được ghi vào tệp được bao bọc được giải mã theo data_encoding đã cho và sau đó được ghi vào tệp gốc dưới dạng byte bằng cách sử dụng file_encoding. Các byte đọc từ tệp gốc được giải mã theo file_encoding và kết quả được mã hóa bằng data_encoding
Nếu file_encoding không được cung cấp, nó sẽ mặc định là data_encoding
lỗi có thể được đưa ra để xác định việc xử lý lỗi. Nó mặc định là 'strict'
, điều này gây ra lỗi trong trường hợp xảy ra lỗi mã hóa
Sử dụng bộ mã hóa gia tăng để mã hóa lặp lại đầu vào do bộ lặp cung cấp. Chức năng này là một. Đối số lỗi [cũng như bất kỳ đối số từ khóa nào khác] được chuyển qua bộ mã hóa gia tăng
Chức năng này yêu cầu codec chấp nhận các đối tượng văn bản để mã hóa. Do đó, nó không hỗ trợ các bộ mã hóa byte-to-byte như ValueError
6
Sử dụng bộ giải mã gia tăng để giải mã lặp lại đầu vào do iterator cung cấp. Chức năng này là một. Đối số lỗi [cũng như bất kỳ đối số từ khóa nào khác] được chuyển qua bộ giải mã gia tăng
Chức năng này yêu cầu codec chấp nhận các đối tượng để giải mã. Do đó, nó không hỗ trợ các bộ mã hóa chuyển văn bản thành văn bản như ValueError
8, mặc dù có thể sử dụng ValueError
8 tương đương với
Mô-đun này cũng cung cấp các hằng số hữu ích cho việc đọc và ghi vào các tệp phụ thuộc nền tảng sau đây
codec. BOMcodec. BOM_BEcodec. BOM_LEcodec. BOM_UTF8codec. BOM_UTF16codec. BOM_UTF16_BEcodec. BOM_UTF16_LEcodec. BOM_UTF32codec. BOM_UTF32_BEcodec. BOM_UTF32_LECác hằng số này xác định các chuỗi byte khác nhau, là các dấu thứ tự byte Unicode [BOM] cho một số mã hóa. Chúng được sử dụng trong các luồng dữ liệu UTF-16 và UTF-32 để biểu thị thứ tự byte được sử dụng và trong UTF-8 dưới dạng chữ ký Unicode. là một trong hai hoặc tùy thuộc vào thứ tự byte gốc của nền tảng, là bí danh cho , cho và cho. Những cái khác đại diện cho BOM ở dạng mã hóa UTF-8 và UTF-32
Các lớp cơ sở Codec
Mô-đun xác định một tập hợp các lớp cơ sở xác định các giao diện để làm việc với các đối tượng codec và cũng có thể được sử dụng làm cơ sở cho việc triển khai codec tùy chỉnh
Mỗi codec phải xác định bốn giao diện để làm cho nó có thể sử dụng được như codec trong Python. bộ mã hóa không trạng thái, bộ giải mã không trạng thái, trình đọc luồng và trình ghi luồng. Trình đọc và ghi luồng thường sử dụng lại bộ mã hóa/giải mã không trạng thái để triển khai các giao thức tệp. Tác giả codec cũng cần xác định cách codec sẽ xử lý các lỗi mã hóa và giải mã
Trình xử lý lỗi
Để đơn giản hóa và tiêu chuẩn hóa việc xử lý lỗi, codec có thể triển khai các sơ đồ xử lý lỗi khác nhau bằng cách chấp nhận đối số chuỗi lỗi
>>> 'German ß, ♬'.encode[encoding='ascii', errors='backslashreplace'] b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode[encoding='ascii', errors='xmlcharrefreplace'] b'German ß, ♬'
Các trình xử lý lỗi sau có thể được sử dụng với tất cả các codec Python
Giá trị
Nghĩa
'strict'
Nâng cao [hoặc một lớp con], đây là mặc định. Thực hiện trong
'strict'
4
Bỏ qua dữ liệu không đúng định dạng và tiếp tục mà không cần thông báo thêm. Thực hiện trong
'strict'
6
Thay thế bằng một điểm đánh dấu thay thế. Khi mã hóa, hãy sử dụng 'strict'
7 [ký tự ASCII]. Khi giải mã, hãy sử dụng 'strict'
8 [U+FFFD, KÝ TỰ THAY THẾ chính thức]. Thực hiện trong
ValueError
0
Thay thế bằng các chuỗi thoát dấu gạch chéo ngược. Về mã hóa, hãy sử dụng dạng thập lục phân của điểm mã Unicode với các định dạng ValueError
1 ValueError
2 ValueError
3. Khi giải mã, hãy sử dụng dạng thập lục phân của giá trị byte có định dạng ValueError
1. Thực hiện trong
ValueError
6
Khi giải mã, thay thế byte bằng mã thay thế riêng lẻ nằm trong khoảng từ ValueError
7 đến ValueError
8. Mã này sau đó sẽ được chuyển trở lại thành cùng một byte khi trình xử lý lỗi ValueError
6 được sử dụng khi mã hóa dữ liệu. [Xem PEP 383 để biết thêm. ]
Các trình xử lý lỗi sau chỉ áp dụng cho mã hóa [trong ]
Giá trị
Nghĩa
'strict'
80
Thay thế bằng tham chiếu ký tự số XML/HTML, là dạng thập phân của điểm mã Unicode có định dạng 'strict'
81 Được triển khai trong
'strict'
83
Thay thế bằng chuỗi thoát 'strict'
84, những gì xuất hiện trong dấu ngoặc nhọn là thuộc tính Tên từ Cơ sở dữ liệu ký tự Unicode. Thực hiện trong
Ngoài ra, trình xử lý lỗi sau dành riêng cho các codec nhất định
Giá trị
codec
Nghĩa
'strict'
86
utf-8, utf-16, utf-32, utf-16-be, utf-16-le, utf-32-be, utf-32-le
Cho phép mã hóa và giải mã điểm mã thay thế ['strict'
87 - 'strict'
88] như điểm mã bình thường. Mặt khác, các codec này coi sự hiện diện của điểm mã thay thế là một lỗi
Mới trong phiên bản 3. 1. Trình xử lý lỗi ValueError
6 và 'strict'
86.
Đã thay đổi trong phiên bản 3. 4. Trình xử lý lỗi 'strict'
86 hiện hoạt động với codec utf-16* và utf-32*.
Mới trong phiên bản 3. 5. Trình xử lý lỗi 'strict'
83.
Đã thay đổi trong phiên bản 3. 5. Trình xử lý lỗi ValueError
0 hiện hoạt động với chức năng giải mã và dịch.
Tập hợp các giá trị được phép có thể được mở rộng bằng cách đăng ký trình xử lý lỗi có tên mới
codec. register_error[tên , error_handler]Đăng ký hàm xử lý lỗi error_handler dưới tên name. Đối số error_handler sẽ được gọi trong quá trình mã hóa và giải mã trong trường hợp có lỗi, khi tên được chỉ định làm tham số lỗi
Để mã hóa, error_handler sẽ được gọi với một phiên bản chứa thông tin về vị trí xảy ra lỗi. Trình xử lý lỗi phải đưa ra ngoại lệ này hoặc ngoại lệ khác hoặc trả về một bộ có phần thay thế cho phần không mã hóa được của đầu vào và vị trí tiếp tục mã hóa. Sự thay thế có thể là hoặc. Nếu thay thế là byte, bộ mã hóa sẽ chỉ sao chép chúng vào bộ đệm đầu ra. Nếu thay thế là một chuỗi, bộ mã hóa sẽ mã hóa thay thế. Mã hóa tiếp tục trên đầu vào ban đầu ở vị trí đã chỉ định. Các giá trị vị trí phủ định sẽ được coi là có liên quan đến phần cuối của chuỗi đầu vào. Nếu vị trí kết quả nằm ngoài giới hạn, một sẽ được nâng lên
Giải mã và dịch hoạt động tương tự, ngoại trừ hoặc sẽ được chuyển đến trình xử lý và phần thay thế từ trình xử lý lỗi sẽ được đưa trực tiếp vào đầu ra
Trình xử lý lỗi đã đăng ký trước đó [bao gồm cả trình xử lý lỗi tiêu chuẩn] có thể được tra cứu theo tên
codec. lookup_error[tên]Trả lại trình xử lý lỗi đã đăng ký trước đó dưới tên name
Tăng a trong trường hợp không tìm thấy trình xử lý
Các trình xử lý lỗi tiêu chuẩn sau đây cũng được cung cấp dưới dạng các hàm cấp mô-đun
codec. strict_errors[ngoại lệ]Thực hiện xử lý lỗi 'strict'
Mỗi lỗi mã hóa hoặc giải mã làm tăng một
codec. ignore_errors[ngoại lệ]Thực hiện xử lý lỗi 'strict'
4
Dữ liệu không đúng định dạng bị bỏ qua;
codec. replace_errors[ngoại lệ]Thực hiện xử lý lỗi 'strict'
6
Thay thế 'strict'
7 [ký tự ASCII] cho các lỗi mã hóa hoặc 'strict'
8 [U+FFFD, KÝ TỰ THAY THẾ chính thức] cho các lỗi giải mã
Thực hiện xử lý lỗi ValueError
0
Dữ liệu không đúng định dạng được thay thế bằng chuỗi thoát có dấu gạch chéo ngược. Về mã hóa, hãy sử dụng dạng thập lục phân của điểm mã Unicode với các định dạng ValueError
1 ValueError
2 ValueError
3. Khi giải mã, hãy sử dụng dạng thập lục phân của giá trị byte có định dạng ValueError
1
Đã thay đổi trong phiên bản 3. 5. Làm việc với giải mã và dịch.
codec. xmlcharrefreplace_errors[ngoại lệ]Triển khai xử lý lỗi 'strict'
80 [chỉ dành cho mã hóa bên trong]
Ký tự không thể mã hóa được thay thế bằng tham chiếu ký tự số XML/HTML thích hợp, là dạng thập phân của điểm mã Unicode có định dạng 'strict'
81
Triển khai xử lý lỗi 'strict'
83 [chỉ dành cho mã hóa bên trong]
Ký tự không thể mã hóa được thay thế bằng chuỗi thoát 'strict'
84. Tập hợp các ký tự xuất hiện trong dấu ngoặc nhọn là thuộc tính Tên từ Cơ sở dữ liệu ký tự Unicode. Ví dụ: ký tự viết thường của Đức bytes
417 sẽ được chuyển đổi thành chuỗi byte bytes
418
Mới trong phiên bản 3. 5
Mã hóa và giải mã phi trạng thái
Lớp cơ sở bytes
419 xác định các phương thức này cũng xác định các giao diện chức năng của bộ mã hóa và giải mã phi trạng thái
Mã hóa đối tượng đầu vào và trả về một bộ [đối tượng đầu ra, độ dài tiêu thụ]. Chẳng hạn, chuyển đổi một đối tượng chuỗi thành một đối tượng byte bằng cách sử dụng mã hóa bộ ký tự cụ thể [e. g. , bytes
420 hoặc bytes
421]
Đối số lỗi xác định xử lý lỗi để áp dụng. Nó mặc định là xử lý 'strict'
Phương thức có thể không lưu trữ trạng thái trong trường hợp bytes
419. Sử dụng cho các codec phải giữ trạng thái để mã hóa hiệu quả
Bộ mã hóa phải có khả năng xử lý đầu vào có độ dài bằng 0 và trả về một đối tượng trống của loại đối tượng đầu ra trong trường hợp này
Bộ giải mã. giải mã[đầu vào , lỗi='strict']Giải mã đối tượng đầu vào và trả về một bộ [đối tượng đầu ra, độ dài tiêu thụ]. Chẳng hạn, đối với a , giải mã chuyển đổi một đối tượng byte được mã hóa bằng mã hóa bộ ký tự cụ thể thành một đối tượng chuỗi
Đối với mã hóa văn bản và codec byte-to-byte, đầu vào phải là đối tượng byte hoặc đối tượng cung cấp giao diện bộ đệm chỉ đọc – ví dụ: đối tượng bộ đệm và tệp ánh xạ bộ nhớ
Đối số lỗi xác định xử lý lỗi để áp dụng. Nó mặc định là xử lý 'strict'
Phương thức có thể không lưu trữ trạng thái trong trường hợp bytes
419. Sử dụng cho các codec phải giữ trạng thái để giải mã hiệu quả
Bộ giải mã phải có khả năng xử lý đầu vào có độ dài bằng 0 và trả về một đối tượng trống của loại đối tượng đầu ra trong tình huống này
Mã hóa và giải mã tăng dần
Các lớp và cung cấp giao diện cơ bản để mã hóa và giải mã gia tăng. Mã hóa/giải mã đầu vào không được thực hiện với một lệnh gọi đến chức năng bộ mã hóa/giải mã phi trạng thái, mà với nhiều lệnh gọi đến phương thức / của bộ mã hóa/giải mã gia tăng. Bộ mã hóa/giải mã gia tăng theo dõi quá trình mã hóa/giải mã trong khi gọi phương thức
Đầu ra được nối của các lệnh gọi đến phương thức / giống như thể tất cả các đầu vào đơn lẻ được nối thành một và đầu vào này được mã hóa/giải mã bằng bộ mã hóa/giải mã không trạng thái
Đối tượng IncrementalEncoder
Lớp được sử dụng để mã hóa đầu vào theo nhiều bước. Nó định nghĩa các phương thức sau mà mọi bộ mã hóa gia tăng phải xác định để tương thích với sổ đăng ký codec Python
lớp codec. IncrementalEncoder[lỗi=']Trình xây dựng cho một ví dụ
Tất cả các bộ mã hóa gia tăng phải cung cấp giao diện hàm tạo này. Họ có thể tự do thêm các đối số từ khóa bổ sung, nhưng chỉ những đối số được xác định ở đây mới được sử dụng bởi cơ quan đăng ký codec Python
Có thể triển khai các sơ đồ xử lý lỗi khác nhau bằng cách cung cấp đối số từ khóa lỗi. Xem các giá trị có thể
Đối số lỗi sẽ được gán cho một thuộc tính cùng tên. Việc gán cho thuộc tính này giúp có thể chuyển đổi giữa các chiến lược xử lý lỗi khác nhau trong suốt thời gian tồn tại của đối tượng
mã hóa[đối tượng , cuối cùng=False]Mã hóa đối tượng [tính đến trạng thái hiện tại của bộ mã hóa] và trả về đối tượng được mã hóa kết quả. Nếu đây là lần gọi cuối cùng thì phải đúng [mặc định là sai]
đặt lại[]Đặt lại bộ mã hóa về trạng thái ban đầu. Đầu ra bị loại bỏ. gọi bytes
439, chuyển một byte trống hoặc chuỗi văn bản nếu cần, để đặt lại bộ mã hóa và nhận đầu ra
Trả về trạng thái hiện tại của bộ mã hóa phải là số nguyên. Việc triển khai phải đảm bảo rằng bytes
440 là trạng thái phổ biến nhất. [Các trạng thái phức tạp hơn số nguyên có thể được chuyển đổi thành số nguyên bằng cách sắp xếp lại/chọn lọc trạng thái và mã hóa các byte của chuỗi kết quả thành một số nguyên. ]
Đặt trạng thái của bộ mã hóa thành trạng thái. trạng thái phải là trạng thái bộ mã hóa được trả về bởi
Đối tượng Bộ giải mã Gia tăng
Lớp được sử dụng để giải mã đầu vào theo nhiều bước. Nó định nghĩa các phương thức sau mà mọi bộ giải mã gia tăng phải xác định để tương thích với sổ đăng ký codec Python
lớp codec. IncrementalDecoder[lỗi=']Trình xây dựng cho một ví dụ
Tất cả các bộ giải mã gia tăng phải cung cấp giao diện hàm tạo này. Họ có thể tự do thêm các đối số từ khóa bổ sung, nhưng chỉ những đối số được xác định ở đây mới được sử dụng bởi cơ quan đăng ký codec Python
Có thể triển khai các sơ đồ xử lý lỗi khác nhau bằng cách cung cấp đối số từ khóa lỗi. Xem các giá trị có thể
Đối số lỗi sẽ được gán cho một thuộc tính cùng tên. Việc gán cho thuộc tính này giúp có thể chuyển đổi giữa các chiến lược xử lý lỗi khác nhau trong suốt thời gian tồn tại của đối tượng
giải mã[đối tượng , cuối cùng=False]Giải mã đối tượng [tính đến trạng thái hiện tại của bộ giải mã] và trả về đối tượng được giải mã kết quả. Nếu đây là lần gọi cuối cùng thì phải đúng [mặc định là sai]. Nếu final là true thì bộ giải mã phải giải mã hoàn toàn đầu vào và phải xóa tất cả các bộ đệm. Nếu điều này là không thể [e. g. do chuỗi byte không đầy đủ ở cuối đầu vào], nó phải bắt đầu xử lý lỗi giống như trong trường hợp không trạng thái [có thể phát sinh ngoại lệ]
đặt lại[]Đặt lại bộ giải mã về trạng thái ban đầu
getstate[]Trả về trạng thái hiện tại của bộ giải mã. Đây phải là một bộ có hai mục, mục đầu tiên phải là bộ đệm chứa đầu vào vẫn chưa được giải mã. Thứ hai phải là một số nguyên và có thể là thông tin trạng thái bổ sung. [Việc triển khai phải đảm bảo rằng bytes
440 là thông tin trạng thái bổ sung phổ biến nhất. ] Nếu thông tin trạng thái bổ sung này là bytes
440 thì phải có thể đặt bộ giải mã thành trạng thái không có đầu vào được đệm và bytes
440 làm thông tin trạng thái bổ sung, để việc cung cấp đầu vào được đệm trước đó cho bộ giải mã đưa đầu vào trở về trạng thái trước đó mà không tạo ra . [Thông tin trạng thái bổ sung phức tạp hơn số nguyên có thể được chuyển đổi thành số nguyên bằng cách sắp xếp/chọn lọc thông tin và mã hóa các byte của chuỗi kết quả thành số nguyên. ]
Đặt trạng thái của bộ giải mã thành trạng thái. trạng thái phải là trạng thái bộ giải mã được trả về bởi
Mã hóa và giải mã luồng
Các lớp và cung cấp các giao diện làm việc chung có thể được sử dụng để triển khai các mô hình con mã hóa mới rất dễ dàng. Xem bytes
453 để biết ví dụ về cách thực hiện việc này
Đối tượng StreamWriter
Lớp này là một lớp con của bytes
419 và định nghĩa các phương thức sau đây mà mọi người viết luồng phải xác định để tương thích với sổ đăng ký codec Python
Trình xây dựng cho một ví dụ
Tất cả những người viết luồng phải cung cấp giao diện hàm tạo này. Họ có thể tự do thêm các đối số từ khóa bổ sung, nhưng chỉ những đối số được xác định ở đây mới được sử dụng bởi cơ quan đăng ký codec Python
Đối số luồng phải là một đối tượng giống như tệp mở để ghi văn bản hoặc dữ liệu nhị phân, phù hợp với codec cụ thể
Có thể triển khai các sơ đồ xử lý lỗi khác nhau bằng cách cung cấp đối số từ khóa lỗi. Xem các trình xử lý lỗi tiêu chuẩn mà codec luồng bên dưới có thể hỗ trợ
Đối số lỗi sẽ được gán cho một thuộc tính cùng tên. Việc gán cho thuộc tính này giúp có thể chuyển đổi giữa các chiến lược xử lý lỗi khác nhau trong suốt thời gian tồn tại của đối tượng
ghi[đối tượng]Ghi nội dung của đối tượng được mã hóa vào luồng
dòng viết[danh sách]Ghi chuỗi có thể lặp lại được nối vào luồng [có thể bằng cách sử dụng lại phương thức]. Các lần lặp vô hạn hoặc rất lớn không được hỗ trợ. Codec byte-to-byte tiêu chuẩn không hỗ trợ phương pháp này
đặt lại[]Đặt lại bộ đệm codec được sử dụng để giữ trạng thái bên trong
Gọi phương thức này sẽ đảm bảo rằng dữ liệu trên đầu ra được đặt ở trạng thái sạch cho phép nối thêm dữ liệu mới mà không phải quét lại toàn bộ luồng để khôi phục trạng thái
Ngoài các phương thức trên, cũng phải kế thừa tất cả các phương thức và thuộc tính khác từ luồng bên dưới
Đối tượng StreamReader
Lớp này là một lớp con của bytes
419 và định nghĩa các phương thức sau đây mà mọi trình đọc luồng phải xác định để tương thích với sổ đăng ký codec Python
Trình xây dựng cho một ví dụ
Tất cả các trình đọc luồng phải cung cấp giao diện hàm tạo này. Họ có thể tự do thêm các đối số từ khóa bổ sung, nhưng chỉ những đối số được xác định ở đây mới được sử dụng bởi cơ quan đăng ký codec Python
Đối số luồng phải là một đối tượng giống như tệp mở để đọc văn bản hoặc dữ liệu nhị phân, phù hợp với codec cụ thể
Có thể triển khai các sơ đồ xử lý lỗi khác nhau bằng cách cung cấp đối số từ khóa lỗi. Xem các trình xử lý lỗi tiêu chuẩn mà codec luồng bên dưới có thể hỗ trợ
Đối số lỗi sẽ được gán cho một thuộc tính cùng tên. Việc gán cho thuộc tính này giúp có thể chuyển đổi giữa các chiến lược xử lý lỗi khác nhau trong suốt thời gian tồn tại của đối tượng
Tập hợp các giá trị được phép cho đối số lỗi có thể được mở rộng với
đọc[kích thước=- 1, chars=- 1, firstline=False]Giải mã dữ liệu từ luồng và trả về đối tượng kết quả
Đối số ký tự cho biết số lượng điểm mã hoặc byte được giải mã sẽ trả về. Phương thức này sẽ không bao giờ trả về nhiều dữ liệu hơn yêu cầu, nhưng nó có thể trả về ít hơn, nếu không có đủ dữ liệu
Đối số kích thước cho biết số lượng tối đa gần đúng của byte được mã hóa hoặc điểm mã cần đọc để giải mã. Bộ giải mã có thể sửa đổi cài đặt này khi thích hợp. Giá trị mặc định -1 cho biết đọc và giải mã càng nhiều càng tốt. Tham số này nhằm tránh phải giải mã các tệp lớn trong một bước
Cờ dòng đầu tiên chỉ ra rằng chỉ cần trả về dòng đầu tiên là đủ, nếu có lỗi giải mã ở các dòng sau
Phương thức nên sử dụng chiến lược đọc tham lam nghĩa là nó sẽ đọc càng nhiều dữ liệu được phép trong định nghĩa của mã hóa và kích thước đã cho, e. g. nếu phần cuối mã hóa tùy chọn hoặc điểm đánh dấu trạng thái có sẵn trên luồng, bạn cũng nên đọc những phần cuối này
đường đọc[kích thước=Không có, keepends=True]Đọc một dòng từ luồng đầu vào và trả về dữ liệu đã giải mã
kích thước, nếu được cung cấp, được truyền dưới dạng đối số kích thước cho phương thức của luồng
Nếu keepends là false, các kết thúc dòng sẽ bị xóa khỏi các dòng được trả về
đường đọc[sizehint=Không có, keepends=True]Đọc tất cả các dòng có sẵn trên luồng đầu vào và trả về chúng dưới dạng danh sách các dòng
Kết thúc dòng được triển khai bằng phương thức của codec và được bao gồm trong các mục nhập danh sách nếu keepends là đúng
sizehint, nếu được cung cấp, được truyền dưới dạng đối số kích thước cho phương thức của luồng
đặt lại[]Đặt lại bộ đệm codec được sử dụng để giữ trạng thái bên trong
Lưu ý rằng không nên thay đổi vị trí luồng. Phương pháp này chủ yếu nhằm mục đích có thể phục hồi từ các lỗi giải mã
Ngoài các phương thức trên, cũng phải kế thừa tất cả các phương thức và thuộc tính khác từ luồng bên dưới
Đối tượng StreamReaderWriter
Đây là một lớp tiện lợi cho phép gói các luồng hoạt động ở cả chế độ đọc và ghi
Thiết kế sao cho người ta có thể sử dụng các hàm xuất xưởng do hàm trả về để xây dựng thể hiện
lớp codec. StreamReaderWriter[stream , Reader, Writer, errors='strict']Tạo một phiên bản. luồng phải là một đối tượng giống như tệp. Reader và Writer phải là các hàm hoặc lớp xuất xưởng cung cấp giao diện và. Xử lý lỗi được thực hiện theo cách tương tự như được xác định cho trình đọc và ghi luồng
thể hiện xác định các giao diện kết hợp của và các lớp. Chúng kế thừa tất cả các phương thức và thuộc tính khác từ luồng bên dưới
Đối tượng StreamRecoder
Dịch dữ liệu từ mã hóa này sang mã hóa khác, đôi khi hữu ích khi xử lý các môi trường mã hóa khác nhau
Thiết kế sao cho người ta có thể sử dụng các hàm xuất xưởng do hàm trả về để xây dựng thể hiện
lớp codec. StreamRecoder[stream , mã hóa, decode, Reader, Writer, errors='strict']Tạo một phiên bản thực hiện chuyển đổi hai chiều. mã hóa và giải mã hoạt động ở giao diện người dùng — dữ liệu hiển thị đối với lệnh gọi mã bytes
467 và bytes
459, trong khi Trình đọc và Trình ghi hoạt động ở phần phụ trợ — dữ liệu trong luồng
Bạn có thể sử dụng các đối tượng này để thực hiện chuyển mã trong suốt, e. g. , từ Latin-1 đến UTF-8 và ngược lại
Đối số luồng phải là một đối tượng giống như tệp
Các đối số mã hóa và giải mã phải tuân thủ giao diện bytes
419. Reader và Writer phải là các hàm hoặc lớp xuất xưởng cung cấp các đối tượng của giao diện và giao diện tương ứng
Xử lý lỗi được thực hiện theo cách tương tự như được xác định cho trình đọc và ghi luồng
thể hiện xác định các giao diện kết hợp của và các lớp. Chúng kế thừa tất cả các phương thức và thuộc tính khác từ luồng bên dưới
Mã hóa và Unicode
Các chuỗi được lưu trữ nội bộ dưới dạng chuỗi các điểm mã trong phạm vi bytes
491–bytes
492. [Xem PEP 393 để biết thêm chi tiết về việc thực hiện. ] Khi một đối tượng chuỗi được sử dụng bên ngoài CPU và bộ nhớ, tuổi thọ và cách các mảng này được lưu trữ dưới dạng byte trở thành một vấn đề. Cũng như các codec khác, việc tuần tự hóa một chuỗi thành một chuỗi byte được gọi là mã hóa và tạo lại chuỗi từ chuỗi byte được gọi là giải mã. Có nhiều loại codec tuần tự hóa văn bản khác nhau, được gọi chung là
Mã hóa văn bản đơn giản nhất [được gọi là bytes
493 hoặc bytes
494] ánh xạ các điểm mã 0–255 thành các byte bytes
495–bytes
496, có nghĩa là không thể mã hóa một đối tượng chuỗi chứa các điểm mã trên bytes
497 bằng codec này. Làm như vậy sẽ xuất hiện một thông báo giống như sau [mặc dù chi tiết của thông báo lỗi có thể khác]. bytes
499
Có một nhóm mã hóa khác [được gọi là mã hóa charmap] chọn một tập hợp con khác của tất cả các điểm mã Unicode và cách các điểm mã này được ánh xạ tới các byte bytes
495–bytes
496. Để xem làm thế nào điều này được thực hiện chỉ cần mở e. g. bytes
02 [là mã hóa được sử dụng chủ yếu trên Windows]. Có một hằng chuỗi với 256 ký tự cho bạn biết ký tự nào được ánh xạ tới giá trị byte nào
Tất cả các mã hóa này chỉ có thể mã hóa 256 trong số 1114112 điểm mã được xác định bằng Unicode. Một cách đơn giản và dễ hiểu để có thể lưu trữ từng điểm mã Unicode, là lưu trữ từng điểm mã dưới dạng bốn byte liên tiếp. Có hai khả năng. lưu trữ các byte theo thứ tự endian lớn hoặc endian nhỏ. Hai bảng mã này lần lượt được gọi là bytes
03 và bytes
04. Bất lợi của họ là nếu e. g. bạn sử dụng bytes
03 trên một máy endian nhỏ, bạn sẽ luôn phải trao đổi byte khi mã hóa và giải mã. bytes
06 tránh vấn đề này. byte sẽ luôn ở dạng endian tự nhiên. Khi các byte này được đọc bởi CPU có độ bền khác nhau, thì các byte phải được hoán đổi mặc dù. Để có thể phát hiện tuổi thọ của chuỗi byte bytes
07 hoặc bytes
06, có cái gọi là BOM [“Dấu thứ tự byte”]. Đây là ký tự Unicode bytes
09. Ký tự này có thể được thêm vào trước mỗi chuỗi byte bytes
07 hoặc bytes
06. Phiên bản hoán đổi byte của ký tự này [bytes
12] là một ký tự không hợp lệ có thể không xuất hiện trong văn bản Unicode. Vì vậy, khi ký tự đầu tiên trong chuỗi byte bytes
07 hoặc bytes
06 có vẻ là một bytes
15 thì các byte phải được hoán đổi khi giải mã. Thật không may, ký tự bytes
09 có mục đích thứ hai là một bytes
17. một ký tự không có chiều rộng và không cho phép tách một từ. nó có thể. g. được sử dụng để đưa ra gợi ý cho một thuật toán chữ ghép. Với Unicode 4. 0 sử dụng bytes
09 làm bytes
17 không được dùng nữa [với bytes
20 [bytes
21] đảm nhận vai trò này]. Tuy nhiên, phần mềm Unicode vẫn phải có khả năng xử lý bytes
09 ở cả hai vai trò. với tư cách là một BOM, nó là một thiết bị để xác định bố cục lưu trữ của các byte được mã hóa và biến mất sau khi chuỗi byte đã được giải mã thành một chuỗi;
Có một mã hóa khác có thể mã hóa đầy đủ các ký tự Unicode. UTF-8. UTF-8 là mã hóa 8 bit, có nghĩa là không có vấn đề gì với thứ tự byte trong UTF-8. Mỗi byte trong chuỗi byte UTF-8 bao gồm hai phần. bit đánh dấu [bit quan trọng nhất] và bit tải trọng. Các bit đánh dấu là một chuỗi từ 0 đến 4 bit bytes
24 theo sau là bit bytes
440. Các ký tự Unicode được mã hóa như thế này [với x là các bit tải trọng, khi được nối sẽ tạo ra ký tự Unicode]
Phạm vi
mã hóa
bytes
26 … bytes
27
0xxxxxxxx
bytes
28 … bytes
29
110xxxxxx 10xxxxxx
bytes
30 … bytes
31
1110xxxxx 10xxxxxx 10xxxxxx
bytes
32 … bytes
33
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
Bit ít quan trọng nhất của ký tự Unicode là bit x ngoài cùng bên phải
Vì UTF-8 là mã hóa 8 bit nên không cần BOM và bất kỳ ký tự bytes
09 nào trong chuỗi được giải mã [ngay cả khi đó là ký tự đầu tiên] đều được coi là bytes
17
Không có thông tin bên ngoài, không thể xác định một cách đáng tin cậy mã hóa nào đã được sử dụng để mã hóa một chuỗi. Mỗi mã hóa charmap có thể giải mã bất kỳ chuỗi byte ngẫu nhiên nào. Tuy nhiên, điều đó là không thể với UTF-8, vì các chuỗi byte UTF-8 có cấu trúc không cho phép các chuỗi byte tùy ý. Để tăng độ tin cậy mà mã hóa UTF-8 có thể được phát hiện, Microsoft đã phát minh ra một biến thể của UTF-8 [mà Python gọi là bytes
36] cho chương trình Notepad của mình. Trước khi bất kỳ ký tự Unicode nào được ghi vào tệp, BOM được mã hóa UTF-8 [trông giống như chuỗi byte này. bytes
37, bytes
38, bytes
39] được viết. Vì không thể xảy ra trường hợp bất kỳ tệp mã hóa charmap nào cũng bắt đầu bằng các giá trị byte này [điều này sẽ. g. Bản đồ đến
CHỮ NHỎ LATIN I VỚI DIAERESIS
DẤU GIÁC ĐÔI GÓC CHỈ PHẢI
DẤU CÂU HỎI ĐẢO NGƯỢC
trong iso-8859-1], điều này làm tăng khả năng mã hóa bytes
40 có thể được đoán chính xác từ chuỗi byte. Vì vậy, ở đây, BOM không được sử dụng để có thể xác định thứ tự byte được sử dụng để tạo chuỗi byte, mà là một chữ ký giúp đoán mã hóa. Khi mã hóa, codec utf-8-sig sẽ ghi bytes
37, bytes
38, bytes
39 dưới dạng ba byte đầu tiên vào tệp. Khi giải mã, bytes
40 sẽ bỏ qua ba byte đó nếu chúng xuất hiện dưới dạng ba byte đầu tiên trong tệp. Trong UTF-8, việc sử dụng BOM không được khuyến khích và thường nên tránh
Mã hóa tiêu chuẩn
Python đi kèm với một số codec tích hợp sẵn, được triển khai dưới dạng hàm C hoặc với từ điển dưới dạng bảng ánh xạ. Bảng sau đây liệt kê các codec theo tên, cùng với một số bí danh phổ biến và các ngôn ngữ mà mã hóa có thể được sử dụng. Cả danh sách bí danh lẫn danh sách ngôn ngữ đều không đầy đủ. Lưu ý rằng các lựa chọn thay thế chính tả chỉ khác nhau về chữ hoa chữ thường hoặc sử dụng dấu gạch nối thay vì dấu gạch dưới cũng là bí danh hợp lệ; . g. bytes
45 là bí danh hợp lệ cho codec bytes
46
Chi tiết triển khai CPython. Một số mã hóa phổ biến có thể bỏ qua bộ máy tra cứu codec để cải thiện hiệu suất. Các cơ hội tối ưu hóa này chỉ được CPython nhận ra đối với một bộ bí danh [không phân biệt chữ hoa chữ thường] giới hạn. utf-8, utf8, latin-1, latin1, iso-8859-1, iso8859-1, mbcs [chỉ dành cho Windows], ascii, us-ascii, utf-16, utf16, utf-32, utf32 và sử dụng tương tự . Sử dụng bí danh thay thế cho các mã hóa này có thể dẫn đến thực thi chậm hơn
Đã thay đổi trong phiên bản 3. 6. Cơ hội tối ưu hóa được công nhận cho chúng tôi-ascii.
Nhiều bộ ký tự hỗ trợ cùng ngôn ngữ. Chúng khác nhau về các ký tự riêng lẻ [e. g. EURO SIGN có được hỗ trợ hay không] và trong việc gán các ký tự cho các vị trí mã. Đối với các ngôn ngữ châu Âu nói riêng, các biến thể sau đây thường tồn tại
một bộ mã ISO 8859
một trang mã Microsoft Windows, thường bắt nguồn từ bộ mã 8859, nhưng thay thế các ký tự điều khiển bằng các ký tự đồ họa bổ sung
một trang mã EBCDIC của IBM
một trang mã PC của IBM, tương thích với ASCII
giải mã
bí danh
ngôn ngữ
ascii
646, us-ascii
Tiếng Anh
5 lớn
big5-tw, csbig5
Truyền thống Trung Quốc
big5hkscs
big5-hkscs, hkscs
Truyền thống Trung Quốc
cp037
IBM037, IBM039
Tiếng Anh
cp273
273, IBM273, csIBM273
tiếng Đức
Mới trong phiên bản 3. 4
cp424
EBCDIC-CP-HE, IBM424
tiếng Do Thái
cp437
437, IBM437
Tiếng Anh
cp500
EBCDIC-CP-BE, EBCDIC-CP-CH, IBM500
Tây Âu
cp720
tiếng Ả Rập
cp737
người Hy Lạp
cp775
IBM775
ngôn ngữ Baltic
cp850
850, IBM850
Tây Âu
cp852
852, IBM852
Trung và Đông Âu
cp855
855, IBM855
Tiếng Bulgary, Tiếng Byelorussia, Tiếng Macedonia, Tiếng Nga, Tiếng Serbia
cp856
tiếng Do Thái
cp857
857, IBM857
Thổ Nhĩ Kỳ
cp858
858, IBM858
Tây Âu
cp860
860, IBM860
tiếng Bồ Đào Nha
cp861
861, CP-IS, IBM861
tiếng Iceland
cp862
862, IBM862
tiếng Do Thái
cp863
863, IBM863
người Canada
cp864
IBM864
tiếng Ả Rập
cp865
865, IBM865
Đan Mạch, Na Uy
cp866
866, IBM866
tiếng Nga
cp869
869, CP-GR, IBM869
người Hy Lạp
cp874
tiếng Thái
cp875
người Hy Lạp
cp932
932, ms932, mskanji, ms-kanji
tiếng Nhật
cp949
949, ms949, uhc
Hàn Quốc
cp950
950, ms950
Truyền thống Trung Quốc
cp1006
tiếng Urdu
cp1026
ibm1026
Thổ Nhĩ Kỳ
cp1125
1125, ibm1125, cp866u, ruscii
tiếng Ukraina
Mới trong phiên bản 3. 4
cp1140
ibm1140
Tây Âu
cp1250
cửa sổ-1250
Trung và Đông Âu
cp1251
cửa sổ-1251
Tiếng Bulgary, Tiếng Byelorussia, Tiếng Macedonia, Tiếng Nga, Tiếng Serbia
cp1252
cửa sổ-1252
Tây Âu
cp1253
cửa sổ-1253
người Hy Lạp
cp1254
cửa sổ-1254
Thổ Nhĩ Kỳ
cp1255
cửa sổ-1255
tiếng Do Thái
cp1256
cửa sổ-1256
tiếng Ả Rập
cp1257
cửa sổ-1257
ngôn ngữ Baltic
cp1258
cửa sổ-1258
Tiếng Việt
euc_jp
eucjp, ujis, u-jis
tiếng Nhật
euc_jis_2004
jisx0213, eucjis2004
tiếng Nhật
euc_jisx0213
eucjisx0213
tiếng Nhật
euc_kr
euckr, hàn quốc, ksc5601, ks_c-5601, ks_c-5601-1987, ksx1001, ks_x-1001
Hàn Quốc
gb2312
tiếng trung quốc, csiso58gb231280, euc-cn, euccn, eucgb2312-cn, gb2312-1980, gb2312-80, iso-ir-58
Tiếng Trung giản thể
gbk
936, cp936, ms936
tiếng Trung thống nhất
gb18030
gb18030-2000
tiếng Trung thống nhất
hz
hzgb, hz-gb, hz-gb-2312
Tiếng Trung giản thể
iso2022_jp
csiso2022jp, iso2022jp, iso-2022-jp
tiếng Nhật
iso2022_jp_1
iso2022jp-1, iso-2022-jp-1
tiếng Nhật
iso2022_jp_2
iso2022jp-2, iso-2022-jp-2
Nhật Bản, Hàn Quốc, Trung Quốc giản thể, Tây Âu, Hy Lạp
iso2022_jp_2004
iso2022jp-2004, iso-2022-jp-2004
tiếng Nhật
iso2022_jp_3
iso2022jp-3, iso-2022-jp-3
tiếng Nhật
iso2022_jp_ext
iso2022jp-ext, iso-2022-jp-ext
tiếng Nhật
iso2022_kr
csiso2022kr, iso2022kr, iso-2022-kr
Hàn Quốc
tiếng Latinh_1
iso-8859-1, iso8859-1, 8859, cp819, latin, latin1, L1
Tây Âu
iso8859_2
iso-8859-2, latin2, L2
Trung và Đông Âu
iso8859_3
iso-8859-3, latin3, L3
Quốc tế ngữ, tiếng Malta
iso8859_4
iso-8859-4, latin4, L4
ngôn ngữ Baltic
iso8859_5
iso-8859-5, chữ cái
Tiếng Bulgary, Tiếng Byelorussia, Tiếng Macedonia, Tiếng Nga, Tiếng Serbia
iso8859_6
iso-8859-6, tiếng Ả Rập
tiếng Ả Rập
iso8859_7
iso-8859-7, tiếng Hy Lạp, tiếng Hy Lạp8
người Hy Lạp
iso8859_8
iso-8859-8, tiếng Do Thái
tiếng Do Thái
iso8859_9
iso-8859-9, latin5, L5
Thổ Nhĩ Kỳ
iso8859_10
iso-8859-10, latin6, L6
ngôn ngữ Bắc Âu
iso8859_11
iso-8859-11, tiếng Thái
ngôn ngữ Thái Lan
iso8859_13
iso-8859-13, latin7, L7
ngôn ngữ Baltic
iso8859_14
iso-8859-14, latin8, L8
ngôn ngữ Celtic
iso8859_15
iso-8859-15, latin9, L9
Tây Âu
iso8859_16
iso-8859-16, latin10, L10
Đông Nam Châu Âu
vui vẻ
cp1361, ms1361
Hàn Quốc
koi8_r
tiếng Nga
koi8_t
tajik
Mới trong phiên bản 3. 5
koi8_u
tiếng Ukraina
kz1048
kz_1048, strk1048_2002, rk1048
tiếng Kazakh
Mới trong phiên bản 3. 5
mac_cyrillic
maccyrillic
Tiếng Bulgary, Tiếng Byelorussia, Tiếng Macedonia, Tiếng Nga, Tiếng Serbia
mac_greek
macgreek
người Hy Lạp
mac_iceland
maciceland
tiếng Iceland
mac_latin2
maclatin2, maccentraleurope, mac_centeuro
Trung và Đông Âu
mac_roman
macroman, macintosh
Tây Âu
mac_thổ Nhĩ Kỳ
người macturk
Thổ Nhĩ Kỳ
ptcp154
csptcp154, pt154, cp154, cyrillic-asian
tiếng Kazakh
shift_jis
csshiftjis, shiftjis, sjis, s_jis
tiếng Nhật
shift_jis_2004
shiftjis2004, sjis_2004, sjis2004
tiếng Nhật
shift_jisx0213
shiftjisx0213, sjisx0213, s_jisx0213
tiếng Nhật
utf_32
U32, utf32
tất cả các ngôn ngữ
utf_32_be
UTF-32BE
tất cả các ngôn ngữ
utf_32_le
UTF-32LE
tất cả các ngôn ngữ
utf_16
u16, u16
tất cả các ngôn ngữ
utf_16_be
UTF-16BE
tất cả các ngôn ngữ
utf_16_le
UTF-16LE
tất cả các ngôn ngữ
utf_7
U7, unicode-1-1-utf-7
tất cả các ngôn ngữ
utf_8
U8, UTF, utf8, cp65001
tất cả các ngôn ngữ
utf_8_sig
tất cả các ngôn ngữ
Đã thay đổi trong phiên bản 3. 4. Bộ mã hóa utf-16* và utf-32* không còn cho phép mã hóa các điểm mã thay thế ['strict'
87–'strict'
88]. Bộ giải mã utf-32* không còn giải mã các chuỗi byte tương ứng với các điểm mã thay thế.
Đã thay đổi trong phiên bản 3. 8. ______349 hiện là bí danh của bytes
50.
Mã hóa cụ thể của Python
Một số codec được xác định trước dành riêng cho Python, vì vậy tên codec của chúng không có ý nghĩa gì bên ngoài Python. Chúng được liệt kê trong các bảng bên dưới dựa trên các loại đầu vào và đầu ra dự kiến [lưu ý rằng mặc dù mã hóa văn bản là trường hợp sử dụng phổ biến nhất cho codec, cơ sở hạ tầng codec cơ bản hỗ trợ biến đổi dữ liệu tùy ý thay vì chỉ mã hóa văn bản]. Đối với codec bất đối xứng, ý nghĩa đã nêu mô tả hướng mã hóa
Mã hóa văn bản
Các codec sau cung cấp mã hóa và giải mã, tương tự như mã hóa văn bản Unicode
giải mã
bí danh
Nghĩa
idna
Triển khai RFC 3490, xem thêm. Chỉ hỗ trợ bytes
55
mbc
ansi, dbcs
chỉ cửa sổ. Mã hóa toán hạng theo bảng mã ANSI [CP_ACP]
oem
chỉ cửa sổ. Mã hóa toán hạng theo bảng mã OEM [CP_OEMCP]
Mới trong phiên bản 3. 6
lòng bàn tay
Mã hóa của PalmOS 3. 5
mã trừng phạt
Triển khai RFC 3492. Codec trạng thái không được hỗ trợ
raw_unicode_escape
Mã hóa Latin-1 với bytes
56 và bytes
57 cho các điểm mã khác. Dấu gạch chéo ngược hiện tại không được thoát theo bất kỳ cách nào. Nó được sử dụng trong giao thức dưa chua Python
chưa xác định
Đưa ra một ngoại lệ cho tất cả các chuyển đổi, ngay cả các chuỗi rỗng. Trình xử lý lỗi bị bỏ qua
unicode_escape
Mã hóa phù hợp với nội dung của một chữ Unicode trong mã nguồn Python được mã hóa ASCII, ngoại trừ các dấu ngoặc kép không được thoát. Giải mã từ mã nguồn Latin-1. Coi chừng mã nguồn Python thực sự sử dụng UTF-8 theo mặc định
Đã thay đổi trong phiên bản 3. 8. Bộ giải mã “unicode_internal” đã bị xóa.
biến đổi nhị phân
Các codec sau cung cấp biến đổi nhị phân. để ánh xạ. Chúng không được hỗ trợ bởi [chỉ tạo đầu ra]
giải mã
bí danh
Nghĩa
Bộ mã hóa/giải mã
cơ sở64_codec
cơ sở64, cơ sở64
Chuyển đổi toán hạng thành MIME base64 nhiều dòng [kết quả luôn bao gồm một dấu 'strict'
5]
Đã thay đổi trong phiên bản 3. 4. chấp nhận bất kỳ dữ liệu đầu vào nào để mã hóa và giải mã
/
bz2_codec
bz2
Nén toán hạng bằng bz2
/
hex_codec
lục giác
Chuyển đổi toán hạng thành biểu diễn thập lục phân, với hai chữ số trên mỗi byte
/
quopri_codec
quopri, quoteableprintable, quote_printable
Chuyển toán hạng sang trích dẫn MIME có thể in được
với bytes
69 /
uu_codec
ưu
Chuyển đổi toán hạng bằng uuencode
/
zlib_codec
zip, zlib
Nén toán hạng bằng gzip
/
Ngoài , bytes
75 cũng chấp nhận các phiên bản chỉ dành cho giải mã ASCII
Mới trong phiên bản 3. 2. Khôi phục các phép biến đổi nhị phân.
Đã thay đổi trong phiên bản 3. 4. Khôi phục bí danh cho phép biến đổi nhị phân.
chuyển đổi văn bản
Codec sau đây cung cấp một chuyển đổi văn bản. a để lập bản đồ. Nó không được hỗ trợ bởi [chỉ tạo đầu ra]
giải mã
bí danh
Nghĩa
thối_13
thối13
Trả về mã hóa Caesar-cypher của toán hạng
Mới trong phiên bản 3. 2. Khôi phục biến đổi văn bản ValueError
8.
Đã thay đổi trong phiên bản 3. 4. Khôi phục bí danh bytes
82.
— Tên miền quốc tế hóa trong các ứng dụng
Mô-đun này triển khai RFC 3490 [Tên miền quốc tế hóa trong ứng dụng] và RFC 3492 [Nameprep. Cấu hình Stringprep cho Tên miền quốc tế hóa [IDN]]. Nó được xây dựng dựa trên mã hóa bytes
84 và
Nếu bạn cần tiêu chuẩn IDNA 2008 từ RFC 5891 và RFC 5895, hãy sử dụng mô-đun idna của bên thứ ba
Các RFC này cùng nhau xác định một giao thức để hỗ trợ các ký tự không phải ASCII trong tên miền. Tên miền chứa các ký tự không phải ASCII [chẳng hạn như bytes
86] được chuyển đổi thành mã hóa tương thích với ASCII [ACE, chẳng hạn như bytes
87]. Sau đó, dạng ACE của tên miền được sử dụng ở tất cả những nơi mà giao thức không cho phép các ký tự tùy ý, chẳng hạn như truy vấn DNS, trường Máy chủ HTTP, v.v. Việc chuyển đổi này được thực hiện trong ứng dụng; . Ứng dụng phải chuyển đổi rõ ràng các nhãn miền Unicode thành IDNA trên dây và chuyển đổi lại các nhãn ACE thành Unicode trước khi hiển thị chúng cho người dùng
Python hỗ trợ chuyển đổi này theo nhiều cách. bộ giải mã bytes
88 thực hiện chuyển đổi giữa Unicode và ACE, tách chuỗi đầu vào thành các nhãn dựa trên các ký tự phân tách được xác định trong và chuyển đổi từng nhãn thành ACE theo yêu cầu và ngược lại, tách chuỗi byte đầu vào thành các nhãn dựa trên dấu phân cách bytes
89 và chuyển đổi bất kỳ ACE nào . Hơn nữa, mô-đun chuyển đổi tên máy chủ Unicode thành ACE một cách trong suốt, do đó các ứng dụng không cần quan tâm đến việc tự chuyển đổi tên máy chủ khi chúng chuyển chúng sang mô-đun ổ cắm. Ngoài ra, các mô-đun có tên máy chủ làm tham số chức năng, chẳng hạn như và , chấp nhận tên máy chủ Unicode [sau đó cũng gửi tên máy chủ IDNA trong trường Máy chủ nếu nó hoàn toàn gửi trường đó]
Khi nhận tên máy chủ từ dây [chẳng hạn như trong tra cứu tên đảo ngược], không có chuyển đổi tự động sang Unicode nào được thực hiện. các ứng dụng muốn hiển thị các tên máy chủ như vậy cho người dùng nên giải mã chúng thành Unicode
Mô-đun này cũng triển khai quy trình nameprep, thực hiện một số chuẩn hóa nhất định trên tên máy chủ, để đạt được sự phân biệt chữ hoa chữ thường của tên miền quốc tế và để thống nhất các ký tự tương tự. Các chức năng nameprep có thể được sử dụng trực tiếp nếu muốn
mã hóa. idna. nameprep[nhãn]Trả lại phiên bản được đặt tên trước của nhãn. Việc triển khai hiện giả định các chuỗi truy vấn, vì vậy, bytes
95 là đúng
Chuyển đổi nhãn thành ASCII, như được chỉ định trong RFC 3490. bytes
96 được coi là sai
Chuyển đổi nhãn thành Unicode, như được chỉ định trong RFC 3490
— Trang mã Windows ANSI
Mô-đun này triển khai bảng mã ANSI [CP_ACP]
các cửa sổ
Đã thay đổi trong phiên bản 3. 3. Hỗ trợ mọi trình xử lý lỗi.
Đã thay đổi trong phiên bản 3. 2. Trước 3. 2, đối số lỗi đã bị bỏ qua; .
— Bộ giải mã UTF-8 có chữ ký BOM
Mô-đun này triển khai một biến thể của codec UTF-8. Khi mã hóa, BOM được mã hóa UTF-8 sẽ được thêm vào trước các byte được mã hóa UTF-8. Đối với bộ mã hóa trạng thái, việc này chỉ được thực hiện một lần [trong lần ghi đầu tiên vào luồng byte]. Khi giải mã, BOM được mã hóa UTF-8 tùy chọn ở đầu dữ liệu sẽ bị bỏ qua