Hướng dẫn how do you decode an encoded file in python? - làm thế nào để bạn giải mã một tập tin được mã hóa trong python?
Bạn đang xem các giá trị chuỗi byte, được in dưới dạng kết quả Show
Do đó, chuỗi 'k \ xc3 \ xA4se' chứa hai byte không ASCII có giá trị HEX C3 và A4, kết hợp UTF-8 cho CodePoint U+00E4. Bạn nên giải mã các giá trị thành đối tượng
Hoặc tốt hơn là sử dụng
In từ điển kết quả vẫn sẽ sử dụng kết quả 0 là mã thoát cho Unicode Point 00e4, ký tự 1. In các từ riêng lẻ nếu bạn muốn các ký tự thực tế được ghi vào thiết bị đầu cuối:
Nhưng bây giờ bạn có thể so sánh các giá trị này với các dữ liệu khác mà bạn đã giải mã, miễn là bạn biết mã hóa chính xác của chúng và thao tác chúng và mã hóa chúng một lần nữa cho bất kỳ codec đích nào bạn cần sử dụng. 2 sẽ tự động thực hiện việc này, ví dụ, khi in các giá trị Unicode vào thiết bị đầu cuối của bạn.Bạn có thể muốn đọc trên Unicode và Python:
Mã nguồn: lib/codecs.py Lib/codecs.py 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 3.text encodings, which encode text to bytes (and decode bytes to text), but there are also codecs provided that encode text to text, and bytes to bytes. Custom codecs may encode and decode between arbitrary types, but some module features are restricted to be used specifically with text encodings
or with codecs that encode to 3.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à 4 có nghĩa là các lỗi mã hóa tăng 5 (hoặc một lớp con cụ thể CODEC hơn, chẳng hạn như 6). Tham khảo các lớp cơ sở Codec để biết thêm thông tin về xử lý lỗi Codec.Codec Base Classes for more information on codec error handling.
codecs.decode (obj, expoding = 'utf-8', lỗi = 'nghiêm ngặt') ¶decode(obj, encoding='utf-8', errors='strict')¶
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à 4 có nghĩa là việc giải mã các lỗi tăng 5 (hoặc một lớp con cụ thể CODEC hơn, chẳng hạn như 9). Tham khảo các lớp cơ sở Codec để biết thêm thông tin về xử lý lỗi Codec.Codec Base Classes for more information on codec error handling.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 0 như được định nghĩa dưới đây.
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 0, một 2 sẽ được nâng lên. Mặt khác, đối tượng 0 được lưu trữ trong bộ đệm và trả lại cho người gọi. ClassCodecs.CodecInfo (mã hóa, giải mã, streamreader = none, streamwriter = nonecodecs.CodecInfo(encode, decode,
streamreader=None, streamwriter=None, incrementalencoder=None, incrementaldecoder=None,
name=None)¶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 4 và 5 của các phiên bản codec (xem giao diện codec). 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.Codec Interface). The functions or methods are expected to work in a stateless mode.
gia tăng của gia tăng¶ incrementaldecoder¶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ở 6 và 7, tương ứng. Codec gia tăng có thể duy trì trạng thái.
StreamWriter¶¶ streamreader¶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ở 8 và 9, tương ứng. Stream Codec có thể duy trì trạng thái.Để đơ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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'0 cho tra cứu codec: codecs.getencoder (mã hóa) ¶getencoder(encoding)¶ Tra cứu codec cho mã hóa đã cho và trả về chức năng mã hóa của nó. Tăng 2 trong trường hợp mã hóa không thể tìm thấy. codecs.getdecoder (mã hóa) ¶getdecoder(encoding)¶Tra cứu codec cho mã hóa đã cho và trả về chức năng giải mã của nó. Tăng 2 trong trường hợp mã hóa không thể tìm thấy.
codecs.getdecoder (mã hóa) ¶getincrementalencoder(encoding)¶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 2 trong trường hợp mã hóa không thể được tìm thấy hoặc codec không hỗ trợ bộ mã hóa gia tăng.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 2 trong trường hợp mã hóa không thể được tìm thấy hoặc codec không hỗ trợ bộ giải mã gia tăng.Tăng 2 trong trường hợp mã hóa không thể tìm thấy.
codecs.getdecoder (mã hóa) ¶getwriter(encoding)¶Tra cứu codec cho mã hóa đã cho và trả về chức năng giải mã của nó. Tăng 2 trong trường hợp mã hóa không thể tìm thấy.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) ¶ 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.Hyphens and spaces are converted to underscore. Tăng 2 trong trường hợp mã hóa không thể được tìm thấy hoặc codec không hỗ trợ bộ mã hóa gia tăng.unregister(search_function)¶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ó. Tăng 2 trong trường hợp mã hóa không thể được tìm thấy hoặc codec không hỗ trợ bộ giải mã gia tăng. codecs.getreader (mã hóa) ¶open(filename, mode='r', encoding=None, errors='strict',
buffering=- 1)¶Tra cứu codec cho mã hóa đã cho và trả về lớp 9 hoặc chức năng nhà máy của nó.codecs.getwriter (mã hóa) ¶ Tra cứu codec cho mã hóa đã cho và trả về lớp 8 hoặc chức năng nhà máy của nó.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: codecs.register (search_function) ¶ Đăng ký một chức năng tìm kiếm codec. Các chức năng tìm kiếm dự kiến sẽ lấy một đối số, là tên mã hóa trong tất cả các chữ cái chữ thường có dấu gạch nối và không gian được chuyển đổi thành dấu gạch dưới và trả về một đối tượng 0. Trong trường hợp chức năng tìm kiếm không thể tìm thấy mã hóa đã cho, nó sẽ trả về repr() 0.Đã 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.The
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 codecs.open (tên tệp, mode = 'r', mã hóa = không, lỗi = 'nghiêm ngặt', buffering = -1) ¶ Mở một tệp được mã hóa bằng chế độ đã cho và trả về một thể hiện làrepr() 3, cung cấp mã hóa/giải mã trong suốt. Chế độ tệp mặc định là repr() 4, có nghĩa là mở tệp ở chế độ đọc.iterencode(iterator, encoding, errors='strict',
**kwargs)¶Ghi chúgenerator. The errors argument (as well as any other keyword argument) is passed through to the incremental encoder. Nếu mã hóa không phải là Lỗi có thể được đưa ra để xác định xử lý lỗi. Nó mặc định là 4 khiến 5 được nêu ra trong trường hợp xảy ra lỗi mã hóa.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 3 để giải mã. Do đó, nó không hỗ trợ các bộ mã hóa văn bản từ văn bản như repr() 9, mặc dù repr() 9 có thể được sử dụng tương đương với unicode 1.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 u'cheese': u'K\xe4se' 5, 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 u'cheese': u'K\xe4se' 6.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 Giải mã và dịch hoạt động tương tự, ngoại trừ 9 hoặc 11 sẽ được chuyển cho trình xử lý và việc thay thế từ trình xử lý lỗi sẽ được đưa vào đầu ra trực tiếp.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) ¶lookup_error(name)¶Trả về trình xử lý lỗi đã được đăng ký trước đó dưới tên. Tăng 2 trong trường hợp người xử lý không thể tìm thấy.Các trình xử lý lỗi tiêu chuẩn sau đây cũng được cung cấp dưới dạng chức năng cấp mô -đun: codecs.strict_errors (ngoại lệ) ¶strict_errors(exception)¶Thực hiện xử lý lỗi 4.Mỗi lỗi mã hóa hoặc giải mã làm tăng Thực hiện xử lý lỗi Dữ liệu dị dạng bị bỏ qua; Mã hóa hoặc giải mã được tiếp tục mà không cần thông báo thêm. codecs.replace_errors (ngoại lệ) ¶replace_errors(exception)¶Thực hiện xử lý lỗi Các sản phẩm thay thế Thực hiện xử lý lỗi Dữ liệu dị dạng được thay thế bằng chuỗi thoát hiểm. Khi mã hóa, hãy sử dụng dạng thập phân của điểm mã Unicode với các định dạng 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 28 sẽ được chuyển đổi thành chuỗi byte 29.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ở 30 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à bộ giải mã không trạng thái: Codec.encode (đầu vào, lỗi = 'nghiêm ngặt') ¶encode(input,
errors='strict')¶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ụ: 31 hoặc 32).text encoding converts a string
object to a bytes object using a particular character set encoding (e.g., 31 or 32).Đối số lỗi xác định xử lý lỗi để áp dụng. Nó mặc định để xử lý 4.Phương pháp có thể không lưu trữ trạng thái trong ví dụ 30. Sử dụng 8 cho các codec phải giữ trạng thái để làm cho mã hóa hiệu quả.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ý 4.Phương pháp có thể không lưu trữ trạng thái trong ví dụ 30. Sử dụng 8 cho các codec phải giữ trạng thái để làm cho mã hóa hiệu quả.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 ví dụ import codecs
with codecs.open('dictionary.txt', 'r', 'utf8') as my_file:
for line in my_file:
if line.strip(): # ignoring blank lines
key, value = line.strip().split(':')
words[key] = value
print words['cheese']
|
Phạm vi | Mã hóa |
---|---|
37 38
| 0xxxxxxx |
39 40
| 110xxxxxx 10xxxxxxx |
41 42
| 1110xxxx 10xxxxxx 10xxxxxxx |
43 44
| 11110xxx 10xxxxxx 10xxxxxx 10xxxxxxx |
Bit ít đáng kể 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 không cần BOM và bất kỳ ký tự
print words['cheese']
20 nào trong chuỗi được giải mã (ngay cả khi nó là ký tự đầu tiên) được coi là print words['cheese']
46.Nếu không có thông tin bên ngoài, không thể xác định đáng tin cậy nào mã hóa đượ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 đó không thể xảy ra 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
print words['cheese']
47) cho chương trình Notepad của mình: trước bất kỳ ký tự Unicode nào được ghi vào tệp, UTF-8 BOM được mã hóa (trông giống như một chuỗi byte: print words['cheese']
48, print words['cheese']
49, print words['cheese']
50) được viết. Vì nó khá không thể, bất kỳ tệp được mã hóa Charmap nào cũng bắt đầu với các giá trị byte này (ví dụ: bản đồ để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
print words['cheese']
51 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 print words['cheese']
48, print words['cheese']
49, print words['cheese']
50 là ba byte đầu tiên cho tệp. Khi giải mã print words['cheese']
51 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ụ:
print words['cheese']
56 là bí danh hợp lệ cho codec print words['cheese']
57.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 | Tiếng Do Thái | |
cp857 | 857, IBM857 | Thổ Nhĩ Kỳ |
cp858 | 858, IBM858 | Tây Âu |
cp860 | 860, IBM860 | Bồ Đào Nha |
cp861 | 861, CP-IS, IBM861 | 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 | Thái | |
cp875 | người Hy Lạp | |
cp932 | Thái | 932, MS932, MSKANJI, MS-KANJI |
cp949 | tiếng Nhật | 949, MS949, UHC |
cp950 | Hàn Quốc | 950, MS950 |
cp1006 | Truyền thống Trung Quốc | |
cp1026 | ibm1026 | Thổ Nhĩ Kỳ |
cp1125 | 858, IBM858 | Tây Âu 860, IBM860 |
cp1140 | ibm1140 | Tây Âu |
cp1250 | windows-1250 | 860, IBM860 |
cp1251 | windows-1251 | Bồ Đào Nha |
cp1252 | windows-1252 | Tây Âu |
cp1253 | windows-1253 | người Hy Lạp |
cp1254 | windows-1254 | Thổ Nhĩ Kỳ |
cp1255 | windows-1255 | Tiếng Do Thái |
cp1256 | windows-1256 | tiếng Ả Rập |
cp1257 | windows-1257 | 865, IBM865 |
cp1258 | windows-1258 | Đan Mạch, Na Uy |
euc_jp | 866, IBM866 | 932, MS932, MSKANJI, MS-KANJI |
euc_jis_2004 | tiếng Nhật | 932, MS932, MSKANJI, MS-KANJI |
euc_jisx0213 | eucjisx0213 | 932, MS932, MSKANJI, MS-KANJI |
euc_kr | tiếng Nhật | 949, MS949, UHC |
gb2312 | Hàn Quốc | 950, MS950 |
Truyền thống Trung Quốc | Urdu | 1125, IBM1125, CP866U, Ruscii |
gb18030 | gb18030-2000 | 1125, IBM1125, CP866U, Ruscii |
Ukraine | Mới trong phiên bản 3.4. | 950, MS950 |
iso2022_jp | Truyền thống Trung Quốc | 932, MS932, MSKANJI, MS-KANJI |
iso2022_jp_1 | tiếng Nhật | 932, MS932, MSKANJI, MS-KANJI |
iso2022_jp_2 | tiếng Nhật | 949, MS949, UHC |
iso2022_jp_2004 | Hàn Quốc | 932, MS932, MSKANJI, MS-KANJI |
iso2022_jp_3 | tiếng Nhật | 932, MS932, MSKANJI, MS-KANJI |
iso2022_jp_ext | tiếng Nhật | 932, MS932, MSKANJI, MS-KANJI |
iso2022_kr | tiếng Nhật | 949, MS949, UHC |
latin_1 | Hàn Quốc | Tây Âu |
iso8859_2 | 950, MS950 | 860, IBM860 |
iso8859_3 | Bồ Đào Nha | 861, CP-IS, IBM861 |
iso8859_4 | Iceland | 865, IBM865 |
iso8859_5 | Đan Mạch, Na Uy | Bồ Đào Nha |
iso8859_6 | 861, CP-IS, IBM861 | tiếng Ả Rập |
iso8859_7 | 865, IBM865 | người Hy Lạp |
iso8859_8 | Thái | Tiếng Do Thái |
iso8859_9 | 932, MS932, MSKANJI, MS-KANJI | Thổ Nhĩ Kỳ |
iso8859_10 | tiếng Nhật | 949, MS949, UHC |
iso8859_11 | Hàn Quốc | 950, MS950 |
iso8859_13 | Truyền thống Trung Quốc | 865, IBM865 |
iso8859_14 | Đan Mạch, Na Uy | 866, IBM866 |
iso8859_15 | tiếng Nga | Tây Âu |
iso8859_16 | 869, CP-GR, IBM869 | người Hy Lạp |
Thái | 932, MS932, MSKANJI, MS-KANJI | 949, MS949, UHC |
koi8_r | tiếng Nga | |
koi8_t | 869, CP-GR, IBM869 người Hy Lạp | |
koi8_u | Tây Âu | |
kz1048 | 860, IBM860 | Bồ Đào Nha người Hy Lạp |
mac_cyrillic | Thái | Bồ Đào Nha |
mac_greek | 861, CP-IS, IBM861 | người Hy Lạp |
mac_iceland | Thái | Iceland |
mac_latin2 | 932, MS932, MSKANJI, MS-KANJI | 860, IBM860 |
mac_roman | Bồ Đào Nha | Tây Âu |
mac_turkish | 861, CP-IS, IBM861 | Thổ Nhĩ Kỳ |
ptcp154 | Iceland | Bồ Đào Nha |
shift_jis | 861, CP-IS, IBM861 | 932, MS932, MSKANJI, MS-KANJI |
shift_jis_2004 | tiếng Nhật | 932, MS932, MSKANJI, MS-KANJI |
shift_jisx0213 | tiếng Nhật | 932, MS932, MSKANJI, MS-KANJI |
utf_32 | tiếng Nhật | 949, MS949, UHC |
utf_32_be | UTF-32BE | 949, MS949, UHC |
utf_32_le | UTF-32LE | 949, MS949, UHC |
utf_16 | Hàn Quốc | 949, MS949, UHC |
utf_16_be | UTF-16BE | 949, MS949, UHC |
utf_16_le | UTF-16LE | 949, MS949, UHC |
utf_7 | Hàn Quốc | 949, MS949, UHC |
utf_8 | Hàn Quốc | 949, MS949, UHC |
utf_8_sig | 949, MS949, UHC |
Hàn QuốcThe utf-16* and utf-32* encoders no longer allow surrogate code points (u'cheese': u'K\xe4se'
8–u'cheese': u'K\xe4se'
9) to be encoded. The utf-32* decoders no longer decode byte sequences that correspond to surrogate code points.
950, MS950
print words['cheese']
60 is now an alias to print words['cheese']
61.Truyền thống Trung Quốc
Urdu
1125, IBM1125, CP866U, Ruscii
Ukrainebytes-like object to repr()
6 decoding, similar to the Unicode text encodings.
Mới trong phiên bản 3.4. | Trung và Đông Âu | Tiếng Bêl La, Byelorussian, người Macedonia, tiếng Nga |
---|---|---|
Ngôn ngữ Baltic | Tiếng ViệtRFC 3490, see also 65. Only 66 is supported.
| |
eucjp, ujis, u-jis | JISX0213, EUCJIS2004 | Euckr, Hàn Quốc, KSC5601, KS_C-5601, KS_C-5601-1987, KSX1001, KS_X-1001 |
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 | Trung Quốc thống nhất | |
Punycode | Thực hiện RFC 3492. Các codec trạng thái không được hỗ trợ.RFC 3492. Stateful codecs are not supported. | |
raw_unicode_escape | Mã hóa Latin-1 với 67 và 68 cho các điểm mã khác. Backslash hiện tại không được trốn thoát theo bất kỳ cách nào. Nó được sử dụng trong giao thức Python Pickle.
| |
chưa xác định | Nâng cao một ngoại lệ cho tất cả các chuyển đổi, thậm chí các chuỗi trống. Trình xử lý lỗi bị bỏ qua. | |
unicode_escape | Mã hóa phù hợp như nội dung của một bản theo nghĩa đen của unicode trong mã nguồn python được mã hóa ASCII-ASCII, ngoại trừ các trích dẫn không được thoát ra. Giải mã từ mã nguồn Latin-1. Hãy 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: Codec của Unicode_Inodernal đã bị xóa.“unicode_internal” codec is removed.
BiTHER biến đổi nhị phân
Các codec sau đây cung cấp các biến đổi nhị phân: đối tượng giống như byte cho ánh xạ
import codecs
with codecs.open('dictionary.txt', 'r', 'utf8') as my_file:
for line in my_file:
if line.strip(): # ignoring blank lines
key, value = line.strip().split(':')
words[key] = value
3. Chúng không được hỗ trợ bởi print words['cheese']
70 (chỉ tạo ra đầu ra repr()
6).bytes-like
object to import codecs
with codecs.open('dictionary.txt', 'r', 'utf8') as my_file:
for line in my_file:
if line.strip(): # ignoring blank lines
key, value = line.strip().split(':')
words[key] = value
3 mappings. They are not supported by print words['cheese']
70 (which only produces repr()
6 output).
Codec | Bí danh | Nghĩa | Bộ mã hóa / bộ giải mã |
---|---|---|---|
cơ sở64_codec 1 | cơ sở64, base_64 | Chuyển đổi toán hạng thành mime base64 multiline (kết quả luôn bao gồm một dấu vết Thay đổi trong phiên bản 3.4: Chấp nhận bất kỳ đối tượng giống như byte nào làm đầu vào để mã hóa và giải mãaccepts any bytes-like object as input for encoding and decoding | 73 / 74
|
bz2_codec | bz2 | Nén toán hạng bằng BZ2. | 75 / 76
|
hex_codec | Hex | Chuyển đổi toán hạng thành đại diện thập lục phân, với hai chữ số mỗi byte. | 77 / 78
|
quopri_codec | Quopri, trích dẫn có thể trích dẫn, trích dẫn_printable | Chuyển đổi toán hạng thành mime được trích dẫn có thể in. | 79 với 80 / 81
|
uu_codec | uu | Chuyển đổi toán hạng bằng UUenCode. | 82 / 83
|
zlib_codec | Zip, Zlib | Nén toán hạng bằng GZIP. | 84 / 85
|
Ngoài các đối tượng giống như byte,
print words['cheese']
86 cũng chấp nhận các trường hợp ASCII-chỉ là repr()
6 để giải mãbytes-like objects, print words['cheese']
86 also accepts ASCII-only instances of repr()
6 for decodingMới trong phiên bản 3.2: Phục hồi các biến đổi nhị phân.Restoration 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ạ repr()
6 sang repr()
6. Nó không được hỗ trợ bởi
print words['cheese']
90 (chỉ tạo ra đầu ra import codecs
with codecs.open('dictionary.txt', 'r', 'utf8') as my_file:
for line in my_file:
if line.strip(): # ignoring blank lines
key, value = line.strip().split(':')
words[key] = value
3).
Codec | Bí danh | Nghĩa |
---|---|---|
rot_13 | rot13 | Bộ mã hóa / bộ giải mã |
cơ sở64_codec 1Restoration of the repr()
9 text transform.
cơ sở64, base_64Restoration of the
print words['cheese']
93 alias.Chuyển đổi toán hạng thành mime base64 multiline (kết quả luôn bao gồm một dấu vết repr()6).
Thay đổi trong phiên bản 3.4: Chấp nhận bất kỳ đối tượng giống như byte nào làm đầu vào để mã hóa và giải mãRFC 3490 (Internationalized Domain Names in Applications) and RFC 3492 (Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)). It builds upon the
print words['cheese']
95 encoding and
print words['cheese']
96.print words['cheese']
73 / print words['cheese']
74RFC 5891 and RFC 5895, use the
third-party idna module.Nén toán hạng bằng BZ2.
print words['cheese']
75 / print words['cheese']
76section 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'00 separator and converting any ACE labels found into unicode. Furthermore, the
>>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'01 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
>>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'02 and
>>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'03, accept Unicode host names (
>>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'02 then also transparently sends an IDNA hostname in the field if it sends that field at all).
Hex
Chuyển đổi toán hạng thành đại diện thập lục phân, với hai chữ số mỗi byte.
mã hóa.idna.namePrep (nhãn) ¶nameprep(label)¶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
>>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'06 là đúng. mã hóa.idna.toascii (nhãn) ¶ToASCII(label)¶
Chuyển đổi nhãn thành ASCII, như được chỉ định trong RFC 3490.
>>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'07 được giả sử là sai.RFC 3490.
>>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'07 is assumed to be false. mã hóa.idna.tounicode (nhãn) ¶ToUnicode(label)¶
Chuyển đổi nhãn thành Unicode, như được chỉ định trong RFC 3490.RFC 3490.
>>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬' 08 - 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; codecs.open()
7 luôn được sử dụng để mã hóa và codecs.open()
5 để giải mã.Before 3.2, the errors argument was ignored;
codecs.open()
7 was always used to encode, and codecs.open()
5 to decode.
>>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬' 11-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.