Hướng dẫn which encoding is used in python? - mã hóa nào được sử dụng trong python?
Mã nguồn: lib/codecs.py Lib/codecs.py Show
Mô -đun này xác định các lớp cơ sở cho các codec python tiêu chuẩn (bộ mã hóa và bộ giải mã) và cung cấp quyền truy cập vào Cơ quan đăng ký Codec Python nội bộ, quản lý quy trình tra cứu xử lý lỗi và xử lý lỗi. Hầu hết các codec tiêu chuẩn là mã hóa văn bản, 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ó các codec cung cấp mã hóa văn bản thành văn bản và byte cho byte. Các 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ế được sử dụng cụ thể với mã hóa văn bản hoặc với các 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: codecs.encode (obj, mã hóa = 'utf-8', lỗi = 'nghiêm ngặt') ¶encode(obj, encoding='utf-8', errors='strict')¶Mã hóa OBJ bằng cách sử dụng codec đã đăng ký để mã hóa. Lỗi có thể được đưa ra để đặt sơ đồ xử lý lỗi mong muốn. Trình xử lý lỗi mặc định là Giải mã OBJ bằng cách sử dụng codec đã đăng ký mã hóa. Lỗi có thể được đưa ra để đặt sơ đồ xử lý lỗi mong muốn. Trình xử lý lỗi mặc định là Các chi tiết đầy đủ cho mỗi codec cũng có thể được tra cứu trực tiếp: codecs.lookup (mã hóa) ¶lookup(encoding)¶Nhìn lên thông tin codec trong sổ đăng ký codec Python và trả về một đối tượng Mã hóa lần đầu tiên được tra cứu trong bộ đệm đă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ý được quét. Nếu không tìm thấy đối tượng Chi tiết codec khi tìm kiếm 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ên¶¶Tên của mã hóa. Encode Burd¶ decode¶Các chức năng mã hóa và giải mã không 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 các phương thức Các lớp mã hóa và bộ giải mã gia tăng hoặc các chức năng 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ở Stream Writer và các lớp đọc hoặc chức năng 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ở Để đơn giản hóa quyền 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 Tra cứu codec cho mã hóa đã cho và trả về chức năng mã hóa của nó. Tăng Tra cứu codec cho mã hóa đã cho và trả về chức năng giải mã của nó. Tăng Tra cứu codec cho mã hóa đã cho và trả về chức năng giải mã của nó. codecs.getincrementalencoder (mã hóa) ¶ Tra cứu codec cho mã hóa đã cho và trả về lớp mã hóa gia tăng hoặc chức năng nhà máy.getincrementaldecoder(encoding)¶Tăng một codecs.getIncrementAdcoder (mã hóa) ¶ Tra cứu codec cho mã hóa đã cho và trả về lớp giải mã hoặc chức năng nhà máy gia tăng của nó.getreader(encoding)¶Tăng Tăng Tra cứu codec cho mã hóa đã cho và trả về chức năng giải mã của nó. Tăng codecs.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ó.register(search_function)¶codecs.getincrementalencoder (mã hóa) ¶ Đã thay đổi trong phiên bản 3.9: Hyphens và không gian được chuyển đổi thành dấu gạch dưới.Hyphens and spaces are converted to underscore. codecs.unregister (search_function) ¶unregister(search_function)¶UNBISTER một chức năng tìm kiếm codec và xóa bộ đệm đăng ký. Nếu chức năng tìm kiếm không được đăng ký, không làm gì cả. Mới trong phiên bản 3.10. Mặc dù mô -đun Mở một tệp được mã hóa bằng chế độ đã cho và trả về một thể hiện là Ghi chú Nếu mã hóa không phải là 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 xử lý lỗi. Nó mặc định là Bộ đệm có cùng ý nghĩa như đối với hàm Đã thay đổi trong phiên bản 3.11: Chế độ Trả về một thể hiện Dữ liệu được ghi vào tệp được 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 File_encoding. Các byte được đọ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 đưa ra, nó mặc định là Data_encoding. Lỗi có thể được đưa ra để xác định xử lý lỗi. Nó mặc định là Sử dụng bộ mã hóa gia tăng để lặp lại mã hóa đầu vào được cung cấp bởi iterator. Hàm này là một trình tạo. Đối số lỗi (cũng như bất kỳ đối số từ khóa nào khác) được truyền qua bộ mã hóa gia tăng.generator. The errors argument (as well as any other keyword argument) is passed through to the incremental encoder. Hàm này yêu cầu codec chấp nhận các đối tượng Sử dụng bộ giải mã gia tăng để giải mã lặp lại đầu vào được cung cấp bởi iterator. Hàm này là một trình tạo. Đối số lỗi (cũng như bất kỳ đối số từ khóa nào khác) được chuyển qua trình giải mã gia tăng.generator. The errors argument (as well as any other keyword argument) is passed through to the incremental decoder. Hàm này yêu cầu codec chấp nhận các đối tượng Mô -đun cũng cung cấp các hằng số sau đây hữu ích cho việc đọc và ghi vào các tệp phụ thuộc vào nền tảng: codecs.bom¶ Codecs.bom_be¶ Codecs.bom_le¶ Codecs.bom_utf8¶ Codecs.bom_utf16¶ Codecs.bom_utf16_be¶ Codecs.bom_utf16_LEC.BOM¶ codecs.BOM_BE¶ codecs.BOM_LE¶ codecs.BOM_UTF8¶ codecs.BOM_UTF16¶ codecs.BOM_UTF16_BE¶ codecs.BOM_UTF16_LE¶ codecs.BOM_UTF32¶ codecs.BOM_UTF32_BE¶ codecs.BOM_UTF32_LE¶Các hằng số này xác định các chuỗi byte khác nhau, là dấu lệnh unicode byte (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 để chỉ ra thứ tự byte được sử dụng và trong UTF-8 dưới dạng chữ ký Unicode. Các lớp cơ sở CodecMô -đun Mỗi codec phải xác định bốn giao diện để làm cho nó có thể sử dụng được là 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à người viết luồng. Trình đọc luồng và nhà văn thường sử dụng lại bộ mã hóa/bộ giải mã không trạng thái để thực hiện các giao thức tệp. Các tác giả Codec cũng cần xác định cách thức codec sẽ xử lý các lỗi mã hóa và giải mã. Người xử lý lỗiĐể đơn giản hóa và chuẩn hóa xử lý lỗi, CODEC có thể thực hiện 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 đây có thể được sử dụng với tất cả các mã hóa mã hóa tiêu chuẩn Python:Standard Encodings codecs:
Trình xử lý lỗi sau chỉ áp dụng cho mã hóa (trong mã hóa văn bản):text encodings):
Thay thế bằng một điểm đánh dấu thay thế. Khi mã hóa, sử dụng
Thay thế bằng một điểm đánh dấu thay thế. Khi mã hóa, sử dụng Thay thế bằng trình tự thoát hiểm. Khi mã hóa, hãy sử dụng hình thức thập lục phân của điểm mã Unicode với các định dạng Khi giải mã, thay thế byte bằng mã thay thế riêng lẻ từ Trình xử lý lỗi sau chỉ áp dụng cho mã hóa (trong mã hóa văn bản):The Thay thế bằng tham chiếu ký tự số XML/HTML, đây là một dạng thập phân của điểm mã Unicode với định dạng CodecInfo 3, những gì xuất hiện trong niềng răng là thuộc tính tên từ cơ sở dữ liệu ký tự Unicode. Được thực hiện trong CodecInfo 4.register_error(name, error_handler)¶Ngoài ra, trình xử lý lỗi sau đây dành riêng cho các codec đã cho: Codec 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ế ( UnicodeDecodeError 5 và CodecInfo 5.lookup_error(name)¶Đã thay đổi trong phiên bản 3.4: Trình xử lý lỗi Mới trong phiên bản 3.5: Trình xử lý lỗi Đã thay đổi trong phiên bản 3.5: Trình xử lý lỗi codecs.register_error (tên, error_handler) ¶ Đăng ký hàm xử lý lỗi ERROR_Handler dưới tên. Đối số Error_Handler sẽ được gọi trong quá trình mã hóa và giải mã trong trường hợp lỗi, khi tên được chỉ định là tham số lỗi. Để mã hóa, Error_Handler sẽ được gọi với một thể hiệnUnicodeEncodeError , chứa thông tin về vị trí của lỗi. Trình xử lý lỗi phải nâng cao ngoại lệ này hoặc một ngoại lệ khác, hoặc trả lại một bộ xử lý bằng một sự thay thế cho phần không thể kiểm chứng của đầu vào và một vị trí mà mã hóa nên tiếp tục. Sự thay thế có thể là UnicodeEncodeError 4 hoặc bytes . Nếu thay thế là byte, bộ mã hóa sẽ chỉ cần 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 gốc tại vị trí được chỉ định. Các giá trị vị trí âm sẽ được coi là 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 CodecInfo 7 sẽ được nâng lên.ignore_errors(exception)¶Giải mã và dịch hoạt động tương tự, ngoại trừ 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: codecs.lookup_error (tên) ¶replace_errors(exception)¶Trả về trình xử lý lỗi đã được đăng ký trước đó dưới tên. Tăng codecs.strict_errors (ngoại lệ) ¶ Thực hiện xử lý lỗi Thay đổi trong phiên bản 3.5: Hoạt động với giải mã và dịch.Works with decoding and translating. codecs.xmlcharrefreplace_errors (ngoại lệ) ¶xmlcharrefreplace_errors(exception)¶Thực hiện xử lý lỗi Ký tự không thể kiểm soát được thay thế bằng tham chiếu ký tự số XML/HTML thích hợp, đây là một dạng thập phân của điểm mã Unicode với định dạng Thực hiện xử lý lỗi Các ký tự không thể kiểm soát được thay thế bằng chuỗi thoát Mới trong phiên bản 3.5. Mã hóa không trạng thái và giải mãLớp cơ sở Mã hóa đầu vào đối tượng và trả về một tuple (đối tượng đầu ra, độ dài tiêu thụ). Chẳng hạn, mã hóa văn bản chuyển đổi một đối tượng chuỗi thành đối tượng byte bằng cách sử dụng mã hóa bộ ký tự cụ thể (ví dụ: Đối số lỗi xác định xử lý lỗi để áp dụng. Nó mặc định để xử lý Phương pháp có thể không lưu trữ trạng thái trong trường hợp Bộ mã hóa phải có khả năng xử lý đầu vào không có độ dài 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. Codec.decode (đầu vào, lỗi = 'nghiêm ngặt') ¶decode(input, errors='strict')¶Giải mã đầu vào đối tượng và trả về một tuple (đối tượng đầu ra, độ dài tiêu thụ). Chẳng hạn, đối với mã hóa văn bản, việc giải mã chuyển đổi một đối tượng byte được mã hóa bằng một bộ ký tự cụ thể mã hóa thành một đối tượng chuỗi.text encoding, decoding converts a bytes object encoded using a particular character set encoding to a string object. Đối với mã hóa văn bản và các codec byte-to-byte, đầu vào phải là đối tượng byte hoặc một đối tượng cung cấp giao diện bộ đệm chỉ đọc-ví dụ: các đối tượng bộ đệm và các tệp được ánh xạ bộ nhớ. Đối số lỗi xác định xử lý lỗi để áp dụng. Nó mặc định để xử lý Phương pháp có thể không lưu trữ trạng thái trong trường hợp Bộ mã hóa phải có khả năng xử lý đầu vào không có độ dài 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. Codec.decode (đầu vào, lỗi = 'nghiêm ngặt') ¶Giải mã đầu vào đối tượng và trả về một tuple (đối tượng đầu ra, độ dài tiêu thụ). Chẳng hạn, đối với mã hóa văn bản, việc giải mã chuyển đổi một đối tượng byte được mã hóa bằng một bộ ký tự cụ thể mã hóa thành một đối tượng chuỗi. Đối với mã hóa văn bản và các codec byte-to-byte, đầu vào phải là đối tượng byte hoặc một đối tượng cung cấp giao diện bộ đệm chỉ đọc-ví dụ: các đối tượng bộ đệm và các tệp được ánh xạ bộ nhớ. Phương pháp có thể không lưu trữ trạng thái trong trường hợp |
Range | Encoding |
---|---|
| 0xxxxxxx |
| 110xxxxx 10xxxxxx |
| 1110xxxx 10xxxxxx 10xxxxxx |
| 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
The least significant bit of the Unicode character is the rightmost x bit.
As UTF-8 is an 8-bit encoding no BOM is required and any 'strict'
08 character in the decoded string (even if it’s the first character) is treated as a 'strict'
34.
Without external information it’s impossible to reliably determine which encoding was used for encoding a string. Each charmap encoding can decode any random byte sequence. However that’s not possible with UTF-8, as UTF-8
byte sequences have a structure that doesn’t allow arbitrary byte sequences. To increase the reliability with which a UTF-8 encoding can be detected, Microsoft invented a variant of UTF-8 (that Python calls 'strict'
35) for its Notepad program: Before any of the Unicode characters is written to the file, a UTF-8 encoded BOM (which looks like this as a byte sequence: 'strict'
36, 'strict'
37, 'strict'
38) is written. As it’s rather improbable that any charmap encoded file starts with these byte values (which
would e.g. map to
Latin nhỏ chữ I với đường đi
Dấu ngoặc kép bên phải
Dấu hỏi đảo ngược
Trong ISO-8859-1), điều này làm tăng xác suất mã hóa 'strict'
39 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, nhưng là một chữ ký giúp đoán mã hóa. Khi mã hóa codec UTF-8-SIG sẽ viết 'strict'
36, 'strict'
37, 'strict'
38 là ba byte đầu tiên cho tệp. Khi giải mã 'strict'
39 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, đượ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 vài 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 các bí danh và danh sách các ngôn ngữ đều có nghĩa là toàn diện. Lưu ý rằng các lựa chọn thay thế chính tả chỉ khác nhau trong trường hợp 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ệ; Do đó, ví dụ: 'strict'
44 là bí danh hợp lệ cho codec 'strict'
45.
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 Codecs để cải thiện hiệu suất. Các cơ hội tối ưu hóa này chỉ được CPython công nhận cho một bộ bí danh giới hạn (trường hợp không nhạy cảm) -ascii, UTF-16, UTF16, UTF-32, UTF32 và tương tự bằng cách sử dụng dấu gạch dưới thay vì dấu gạch ngang. Sử dụng các bí danh thay thế cho các mã hóa này có thể dẫn đến việc thực hiện chậm hơn. Some common encodings can bypass the codecs lookup machinery to improve performance. These optimization opportunities are only recognized by CPython for a limited set of (case insensitive) aliases: utf-8, utf8, latin-1, latin1, iso-8859-1, iso8859-1, mbcs (Windows only), ascii, us-ascii, utf-16, utf16, utf-32, utf32, and the same using underscores instead of dashes. Using alternative aliases for these encodings may result in slower execution.
Đã thay đổi trong phiên bản 3.6: Cơ hội tối ưu hóa được công nhận cho US-ASCII.Optimization opportunity recognized for us-ascii.
Nhiều bộ ký tự hỗ trợ cùng một ngôn ngữ. Chúng khác nhau ở các ký tự riêng lẻ (ví dụ: dấu hiệu Euro có được hỗ trợ hay không) và trong việc gán 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 mã ISO 8859
Trang mã Windows Windows, thường có nguồn gốc từ mã 8859, nhưng thay thế các ký tự điều khiển bằng các ký tự đồ họa bổ sung
Trang mã EBCDIC IBM
Trang mã PC IBM, tương thích ASCII
Codec | Bí danh | Ngôn ngữ |
---|---|---|
ascii | 646, US-ASCII | Tiếng Anh |
big5 | BIG5-TW, CSBIG5 | Truyền thống Trung Quốc |
big5hkscs | BIG5-HKSCS, HKSCS | Truyền thống Trung Quốc |
cp037 | BIG5-HKSCS, HKSCS | Tiếng Anh |
cp273 | BIG5-TW, CSBIG5 | Truyền thống Trung Quốc BIG5-HKSCS, HKSCS |
cp424 | IBM037, IBM039 | 273, IBM273, CSIBM273 |
cp437 | tiếng Đức | Tiếng Anh |
cp500 | BIG5-TW, CSBIG5 | Truyền thống Trung Quốc |
cp720 | BIG5-HKSCS, HKSCS | |
cp737 | IBM037, IBM039 | |
cp775 | IBM775 | 273, IBM273, CSIBM273 |
cp850 | tiếng Đức | Truyền thống Trung Quốc |
cp852 | BIG5-HKSCS, HKSCS | IBM037, IBM039 |
cp855 | 273, IBM273, CSIBM273 | tiếng Đức |
cp856 | 273, IBM273, CSIBM273 | |
cp857 | tiếng Đức | Mới trong phiên bản 3.4. |
cp858 | EBCDIC-CP-HE, IBM424 | Truyền thống Trung Quốc |
cp860 | BIG5-HKSCS, HKSCS | IBM037, IBM039 |
cp861 | 273, IBM273, CSIBM273 | tiếng Đức |
cp862 | Mới trong phiên bản 3.4. | 273, IBM273, CSIBM273 |
cp863 | tiếng Đức | Mới trong phiên bản 3.4. |
cp864 | IBM864 | BIG5-HKSCS, HKSCS |
cp865 | IBM037, IBM039 | 273, IBM273, CSIBM273 |
cp866 | tiếng Đức | Mới trong phiên bản 3.4. |
cp869 | EBCDIC-CP-HE, IBM424 | IBM037, IBM039 |
cp874 | 273, IBM273, CSIBM273 | |
cp875 | IBM037, IBM039 | |
cp932 | 273, IBM273, CSIBM273 | tiếng Đức |
cp949 | Mới trong phiên bản 3.4. | EBCDIC-CP-HE, IBM424 |
cp950 | Tiếng Do Thái | Truyền thống Trung Quốc |
cp1006 | BIG5-HKSCS, HKSCS | |
cp1026 | ibm1026 | Mới trong phiên bản 3.4. |
cp1125 | EBCDIC-CP-HE, IBM424 | Tiếng Do Thái BIG5-HKSCS, HKSCS |
cp1140 | ibm1140 | Truyền thống Trung Quốc |
cp1250 | windows-1250 | IBM037, IBM039 |
cp1251 | windows-1251 | tiếng Đức |
cp1252 | windows-1252 | Truyền thống Trung Quốc |
cp1253 | windows-1253 | IBM037, IBM039 |
cp1254 | windows-1254 | Mới trong phiên bản 3.4. |
cp1255 | windows-1255 | 273, IBM273, CSIBM273 |
cp1256 | windows-1256 | BIG5-HKSCS, HKSCS |
cp1257 | windows-1257 | 273, IBM273, CSIBM273 |
cp1258 | windows-1258 | tiếng Đức |
euc_jp | Mới trong phiên bản 3.4. | tiếng Đức |
euc_jis_2004 | Mới trong phiên bản 3.4. | tiếng Đức |
euc_jisx0213 | eucjisx0213 | tiếng Đức |
euc_kr | Mới trong phiên bản 3.4. | EBCDIC-CP-HE, IBM424 |
gb2312 | Tiếng Do Thái | 437, IBM437 |
EBCDIC-CP-BE, EBCDIC-CP-CH, IBM500 | Tây Âu | tiếng Ả Rập |
gb18030 | gb18030-2000 | tiếng Ả Rập |
người Hy Lạp | Ngôn ngữ Baltic | 437, IBM437 |
iso2022_jp | EBCDIC-CP-BE, EBCDIC-CP-CH, IBM500 | tiếng Đức |
iso2022_jp_1 | Mới trong phiên bản 3.4. | tiếng Đức |
iso2022_jp_2 | Mới trong phiên bản 3.4. | EBCDIC-CP-HE, IBM424 |
iso2022_jp_2004 | Tiếng Do Thái | tiếng Đức |
iso2022_jp_3 | Mới trong phiên bản 3.4. | tiếng Đức |
iso2022_jp_ext | Mới trong phiên bản 3.4. | tiếng Đức |
iso2022_kr | Mới trong phiên bản 3.4. | EBCDIC-CP-HE, IBM424 |
latin_1 | Tiếng Do Thái | Truyền thống Trung Quốc |
iso8859_2 | ISO-8859-2, Latin2, L2 | Trung và Đông Âu |
iso8859_3 | ISO-8859-3, Latin3, L3 | Esperanto, Malta |
iso8859_4 | ISO-8859-4, Latin4, L4 | Ngôn ngữ Baltic |
iso8859_5 | ISO-8859-5, Cyrillic | Tiếng Bêl La, Byelorussian, người Macedonia, tiếng Nga |
iso8859_6 | ISO-8859-6, tiếng Ả Rập | tiếng Ả Rập |
iso8859_7 | ISO-8859-7, Hy Lạp, 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, Thái | Ngôn ngữ Thái Lan |
iso8859_13 | ISO-8859-13, Latin7, L7 | Ngôn ngữ Baltic |
iso8859_14 | ISO-8859-5, Cyrillic | Tiếng Bêl La, Byelorussian, người Macedonia, tiếng Nga |
iso8859_15 | ISO-8859-6, tiếng Ả Rập | tiếng Ả Rập |
iso8859_16 | ISO-8859-7, Hy Lạp, Hy Lạp8 | người Hy Lạp |
ISO-8859-8, tiếng Do Thái | Tiếng Do Thái | ISO-8859-9, Latin5, L5 |
koi8_r | Thổ Nhĩ Kỳ | |
koi8_t | ISO-8859-10, Latin6, L6 Ngôn ngữ Bắc Âu | |
koi8_u | ISO-8859-11, Thái | |
kz1048 | Ngôn ngữ Thái Lan | ISO-8859-13, Latin7, L7 Ngôn ngữ Bắc Âu |
mac_cyrillic | ISO-8859-11, Thái | Tiếng Bêl La, Byelorussian, người Macedonia, tiếng Nga |
mac_greek | ISO-8859-6, tiếng Ả Rập | người Hy Lạp |
mac_iceland | ISO-8859-8, tiếng Do Thái | Tiếng Do Thái |
mac_latin2 | ISO-8859-9, Latin5, L5 | Trung và Đông Âu |
mac_roman | Thổ Nhĩ Kỳ | tiếng Ả Rập |
mac_turkish | ISO-8859-7, Hy Lạp, Hy Lạp8 | Thổ Nhĩ Kỳ |
ptcp154 | ISO-8859-10, Latin6, L6 | ISO-8859-13, Latin7, L7 |
shift_jis | ISO-8859-14, Latin8, L8 | Ngôn ngữ Celtic |
shift_jis_2004 | ISO-8859-15, Latin9, L9 | Ngôn ngữ Celtic |
shift_jisx0213 | ISO-8859-15, Latin9, L9 | Ngôn ngữ Celtic |
utf_32 | ISO-8859-15, Latin9, L9 | Tây Âu |
utf_32_be | UTF-32BE | Tây Âu |
utf_32_le | UTF-32LE | Tây Âu |
utf_16 | ISO-8859-16, Latin10, L10 | Tây Âu |
utf_16_be | UTF-16BE | Tây Âu |
utf_16_le | UTF-16LE | Tây Âu |
utf_7 | ISO-8859-16, Latin10, L10 | Tây Âu |
utf_8 | ISO-8859-16, Latin10, L10 | Tây Âu |
utf_8_sig | Tây Âu |
ISO-8859-16, Latin10, L10The utf-16* and utf-32* encoders no longer allow surrogate code points (CodecInfo
6–CodecInfo
7) to be encoded. The utf-32* decoders no longer decode byte sequences that correspond to surrogate code points.
Đông Nam Châu Âu'strict'
48 is now an alias to 'strict'
49.
JOHAB
CP1361, MS1361
Hàn Quốc
tiếng Ngabytes-like object to UnicodeEncodeError
4 decoding, similar to the Unicode text encodings.
Tajik | Mới trong phiên bản 3.5. | Ukraine |
---|---|---|
KZ_1048, STRK1048_2002, RK1048 | KazakhRFC 3490, see also | |
MacCyrillic | MACGALEK | Maciceland |
Iceland | maclatin2, maccentraleurope, mac_centeuro Macroman, Macintosh | |
Macturkish | CSPTCP154, PT154, CP154, Cyrillic-Asian | |
Csshiftjis, ShiftJis, SJis, S_Jis | tiếng NhậtRFC 3492. Stateful codecs are not supported. | |
raw_unicode_escape | ShiftJis2004, SJIS_2004, SJIS2004 | |
ShiftJisx0213, SJISX0213, S_JISX0213 | U32, UTF32 | |
unicode_escape | tất cả các ngôn ngữ |
U16, UTF16“unicode_internal” codec is removed.
U7, Unicode-1-1-UTF-7
U8, UTF, UTF8, CP65001bytes-like
object to bytes
mappings. They are not supported by 'strict'
58 (which only produces UnicodeEncodeError
4 output).
Tajik | Mới trong phiên bản 3.5. | Ukraine | KZ_1048, STRK1048_2002, RK1048 |
---|---|---|---|
Kazakh | MacCyrillic | MACGALEK Macicelandaccepts any bytes-like object as input for encoding and decoding | Iceland |
bz2_codec | bz2 | maclatin2, maccentraleurope, mac_centeuro | Macroman, Macintosh |
hex_codec | Macturkish | CSPTCP154, PT154, CP154, Cyrillic-Asian | Csshiftjis, ShiftJis, SJis, S_Jis |
quopri_codec | tiếng Nhật | ShiftJis2004, SJIS_2004, SJIS2004 | ShiftJisx0213, SJISX0213, S_JISX0213 |
uu_codec | U32, UTF32 | tất cả các ngôn ngữ | U16, UTF16 |
zlib_codec | U7, Unicode-1-1-UTF-7 | U8, UTF, UTF8, CP65001 | Đã 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 các điểm mã thay thế (________ 86, ____________ 87) được mã hóa. 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: 'strict'
48 hiện là bí danh của 'strict'
49.bytes-like objects, 'strict'
74 also accepts ASCII-only instances of UnicodeEncodeError
4 for decoding
Mã hóa cụ thể PythonRestoration of the binary transforms.
Đã thay đổi trong phiên bản 3.4: Phục hồi các bí danh cho các biến đổi nhị phân.Restoration of the aliases for the binary transforms.
Transforms văn bản
Codec sau đây cung cấp một phép biến đổi văn bản: ánh xạ UnicodeEncodeError
4 sang UnicodeEncodeError
4. Nó không được hỗ trợ bởi 'strict'
78 (chỉ tạo ra đầu ra bytes
).
Codec | Bí danh | Nghĩa |
---|---|---|
rot_13 | rot13 | Trả lại mã hóa Caesar-Cypher của toán hạng. |
Mới trong phiên bản 3.2: Phục hồi biến đổi văn bản UnicodeEncodeError
7.Restoration of the UnicodeEncodeError
7 text transform.
Đã thay đổi trong phiên bản 3.4: Phục hồi bí danh 'strict'
81.Restoration of the 'strict'
81 alias.
'strict'53 - Tên miền quốc tế hóa trong các ứng dụng
Mô -đun này thực hiện RFC 3490 (tên miền quốc tế hóa trong các ứng dụng) và RFC 3492 (NamePrep: Hồ sơ 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 'strict'
83 và 'strict'
84.RFC 3490 (Internationalized Domain Names in Applications) and RFC 3492 (Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)). It builds upon the 'strict'
83 encoding and
'strict'
84.
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.RFC 5891 and RFC 5895, use the third-party idna module.
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 các tên miền. Một tên miền chứa các ký tự không phải ASCII (như 'strict'
85) được chuyển đổi thành mã hóa tương thích ASCII (ACE, như 'strict'
86). Hình thức ACE của tên miền sau đó được sử dụng ở tất cả các nơi mà các ký tự tùy ý không được phép bởi giao thức, chẳng hạn như truy vấn DNS, các trường HTTP, v.v. Chuyển đổi này được thực hiện trong ứng dụng; Nếu có thể vô hình với người dùng: Ứng dụng nên chuyển đổi nhãn tên miền Unicode một cách minh bạch thành IDNA trên dây và chuyển đổi nhãn ACE trở lại Unicode trước khi trình bày chúng cho người dùng.
Python hỗ trợ chuyển đổi này theo nhiều cách: codec 'strict'
87 thực hiện chuyển đổi giữa unicode và ace, tách một chuỗi đầu vào thành các nhãn dựa trên các ký tự phân cách được xác định trong Phần 3.1 của RFC 3490 và chuyển đổi từng nhãn thành ACE khi cần thiết Chuỗi byte thành các nhãn dựa trên thiết bị phân tách 'strict'
88 và chuyển đổi bất kỳ nhãn ACE nào được tìm thấy thành Unicode. Hơn nữa, mô -đun 'strict'
89 chuyển đổi trong suốt tên máy chủ Unicode thành ACE, do đó các ứng dụng không cần phải quan tâm đến việc tự chuyển đổi tên máy chủ khi chúng chuyển chúng đến mô -đun ổ cắm. Trên hết, các mô -đun có tên máy chủ là tham số chức năng, chẳng hạn như 'strict'
90 và 'strict'
91, chấp nhận tên máy chủ Unicode ('strict'
90 sau đó cũng trong việc gửi một tên máy chủ IDNA trong trường nếu nó gửi trường đó).section 3.1 of RFC 3490 and converting each label to ACE as required, and conversely separating an input byte string into labels based on the 'strict'
88 separator and converting any ACE labels found into unicode. Furthermore, the
'strict'
89 module transparently converts Unicode host names to ACE, so that applications need not be concerned about converting host names themselves when they pass them to the socket module. On top of that, modules that have host names as function parameters, such as
'strict'
90 and 'strict'
91, accept Unicode host names ('strict'
90 then also transparently sends an IDNA hostname in the field if it sends that field at all).
Khi nhận tên máy chủ từ dây (chẳng hạn như trong tra cứu tên ngược), không thực hiện chuyển đổi tự động sang unicode được thực hiện: Các ứng dụng muốn trình bày tên máy chủ đó cho người dùng nên giải mã chúng thành Unicode.
Mô-đun 'strict'
53 cũng thực hiện thủ tục tên, thực hiện một số bình thường hóa trên tên máy chủ, để đạt được tính nhạy cảm của các 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.
Trả về phiên bản tên của nhãn. Việc triển khai hiện đang giả định các chuỗi truy vấn, vì vậy 'strict'
94 là đúng.
Chuyển đổi nhãn thành ASCII, như được chỉ định trong RFC 3490. 'strict'
95 được giả sử là sai.RFC 3490. 'strict'
95 is assumed to be
false.
Chuyển đổi nhãn thành Unicode, như được chỉ định trong RFC 3490.RFC 3490.
'strict'96 - Windows ANSI CodePage¶
Mô -đun này thực hiện mã hóa ANSI (CP_ACP).
Tính khả dụng: Windows.: Windows.
Đã thay đổi trong phiên bản 3.3: Hỗ trợ mọi xử lý lỗi.Support any error handler.
Thay đổi trong phiên bản 3.2: Trước 3.2, đối số lỗi đã bị bỏ qua; ValueError
5 luôn được sử dụng để mã hóa và ValueError
3 để giải mã.Before 3.2, the errors argument was ignored;
ValueError
5 was always used to encode, and ValueError
3 to decode.
'strict'99-codec UTF-8 có chữ ký bom
Mô-đun này thực hiện một biến thể của codec UTF-8. Khi mã hóa, BOM được mã hóa UTF-8 sẽ được chuẩn bị cho UTF-8 được mã hóa byte. Đối với bộ mã hóa trạng thái, điều này chỉ được thực hiện một lần (trên lần ghi đầu tiên vào luồng byte). Khi giải mã, một BOM được mã hóa UTF-8 tùy chọn khi bắt đầu dữ liệu sẽ bị bỏ qua.