Trong bài đăng này, chúng tôi sẽ xem xét cách giải quyết vấn đề Lưu tệp văn bản Utf 8 trong Python bằng các ví dụ từ ngôn ngữ lập trình Show
with open('file.txt', 'w', encoding='utf-8') as f: f.write('Hi EveryOne') Có thể sử dụng một phương pháp khác được mô tả bên dưới với các ví dụ về mã để giải quyết vấn đề tương tự Lưu tệp văn bản Utf 8 bằng Python import codecs file = codecs.open("lol", "w", "utf-8") file.write(u'\ufeff') file.close() By way of numerous illustrations, we have demonstrated how to use code written to solve the Save Utf 8 Text File In Python problem How do I save a UTF-8 file in Python?“python save as utf-8” Code Answer's
Làm cách nào để lưu tệp bằng mã hóa UTF-8?Sử dụng tùy chọn “Save As” trong menu tệp
Làm cách nào để lưu tệp văn bản bằng Python?Lưu tệp văn bản bằng Python
How do I convert a TXT file to UTF-8?
Python có sử dụng UTF-8 theo mặc định không?Mã hóa mặc định của mã nguồn Python là UTF-8. UTF-8 là mã hóa tiêu chuẩn của Web. Các trình soạn thảo văn bản hiện đại như Mã VS sử dụng UTF-8 theo mặc định. Và cả sổ tay. exe đã chọn UTF-8 để mã hóa mặc định. 11-Dec-2019 UTF-8 trong Python là gì?UTF-8 là một trong những bảng mã được sử dụng phổ biến nhất và Python thường mặc định sử dụng nó. UTF là viết tắt của “Định dạng chuyển đổi Unicode” và '8' có nghĩa là các giá trị 8 bit được sử dụng trong mã hóa Làm cách nào để lưu tệp văn bản Unicode?txt thành Unicode. Đó là mã nguồn mở và miễn phí
UTF-8 có giống với Unicode không?Sự khác biệt giữa Unicode và UTF-8 Unicode là một bộ ký tự. UTF-8 đang mã hóa. Unicode là danh sách các ký tự có số thập phân duy nhất (điểm mã) Làm cách nào để bạn lưu mã hóa UTF-8 mà không cần BOM?Tải xuống và cài đặt trình soạn thảo văn bản miễn phí mạnh mẽ này. Notepad++ Mở tệp bạn muốn xác minh/sửa chữa trong Notepad++ Trong menu trên cùng, chọn Mã hóa > Chuyển đổi sang UTF-8 (tùy chọn không có BOM) Lưu tệp Làm cách nào để bạn lưu và tạo một tệp văn bản trong Python?Bản tóm tắt. Sử dụng hàm open(“filename”,”w+”) để tạo tệp văn bản trong Python. Dấu + cho trình thông dịch python biết tệp văn bản mở Python có quyền đọc và ghi. Sử dụng chức năng readlines để đọc từng nội dung của tệp. 24-Aug-2022 Mở Bảng điều khiển Windows -> Vùng. Chuyển đến tab Quản trị và nhấp vào Thay đổi ngôn ngữ hệ thống Xóa dấu kiểm bên cạnh Beta. Sử dụng UTF-8 để hỗ trợ ngôn ngữ trên toàn thế giới. Nhấn OK và khởi động lại máy tính của bạn. 05-09-2022Tra cứu thông tin codec trong sổ đăng ký codec Python và trả về một đối tượng 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 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ên¶Tên mã hóa mã hóa ¶ decode¶Các 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 các phương thức Cá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 định nghĩa lần lượt bởi các lớp cơ sở Cá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 định nghĩa lần lượt bởi các lớp cơ sở Để đơ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 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ề lớp bộ mã hóa gia tăng hoặc chức năng xuất xưởng của nó Tăng 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 Look up the codec for the given encoding and return its Tăng Tra cứu codec cho mã hóa đã cho và trả về lớp Tăng 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. register(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 phả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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'39 Đã 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. unregister(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ù mô-đun >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'40 dựng sẵn và mô-đun >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'41 được liên kết là phương pháp được đề xuất để 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âncodec. open(filename , mode='r' , encoding=None , errors='strict' , buffering=- 1)¶ Mở một tệp được mã hóa bằng chế độ đã cho và trả về một phiên bản của >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'42, cung cấp khả năng mã hóa/giải mã minh bạch. Chế độ tệp mặc định là >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'43, nghĩa là mở tệp ở chế độ đọc Ghi chú Nếu mã hóa không phải là >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'39, 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'45 đượ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 chấp nhận đối với hàm >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'40 tích hợp sẵ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à >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'4 khiến cho một CodecInfo 3 đượ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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'40 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ế độ Trả về một phiên bản 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à >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'4, khiến cho CodecInfo 3 được nâng lên trong trường hợp xảy ra lỗi mã hóacodec. iterencode(iterator , encoding , errors='strict' , **kwargs)¶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 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 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 Sử dụng bộ giải mã gia tăng để giải mã lặp lại đầu vào do bộ lặp cung cấp. Chức năng 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 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'3 để 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ư CodecInfo 38, mặc dù có thể sử dụng CodecInfo 38 tương đương với CodecInfo 40Mô-đ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. 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à 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. Các lớp cơ sở Codec¶Mô-đun 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ó thể sử dụng các trình xử lý lỗi sau với tất cả các Mã hóa tiêu chuẩn codec của Python. Giá trị Nghĩa >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'4 Nâng cao >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'42 (hoặc một phân lớp), đây là giá trị mặc định. Thực hiện trong >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'43 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'44 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'45 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'46 Thay thế bằng một điểm đánh dấu thay thế. Khi mã hóa, hãy sử dụng >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'47 (ký tự ASCII). Khi giải mã, hãy sử dụng >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'48 (U+FFFD, KÝ TỰ THAY THẾ chính thức). Thực hiện trong >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'49
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
Khi giải mã, thay thế byte bằng mã thay thế riêng lẻ trong khoảng từ Các trình xử lý lỗi sau chỉ áp dụng cho mã hóa (trong mã hóa văn bản ). Giá trị Nghĩa
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
Thay thế bằng chuỗi thoát 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
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ế ( Mới trong phiên bản 3. 1. Trình xử lý lỗi Đã 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 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'3. 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 CodecInfo 8 sẽ được nâng lênGiả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 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 một 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 chức năng cấp mô-đun codec. strict_errors(ngoại lệ) ¶Thực hiện xử lý lỗi >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'4 Mỗi lỗi mã hóa hoặc giải mã sẽ làm tăng >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'42codec. ignore_errors(ngoại lệ) ¶ Thực hiện xử lý lỗi >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'44 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'46 Thay thế >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'47 (ký tự ASCII) cho các lỗi mã hóa hoặc >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'48 (U+FFFD, KÝ TỰ THAY THẾ chính thức) cho các lỗi giải mãcodec. backslashreplace_errors(ngoại lệ) ¶ Triển khai xử lý lỗi 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 Changed in version 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 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 Triển khai xử lý lỗi Ký tự không thể mã hóa được thay thế bằng chuỗi thoát 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ở 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, mã hóa văn bản chuyển đố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ể (e. g. , Đối số lỗi xác định xử lý lỗi để áp dụng. Nó mặc định để xử lý >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'4 Phương thức 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 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 mã hóa văn bản , việc giải mã sẽ 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 để xử lý >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'4 Phương thức có thể không lưu trữ trạng thái trong trường hợp 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 Đầu ra được nối của các lệnh gọi phương thức ________ 53/________ 54 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ã phi trạng thái Đối tượng IncrementalEncoder¶Lớp Trình xây dựng cho phiên bản 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 _______55 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 Trình xử lý lỗi để biết 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 (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 tới Đặt lại bộ mã hóa về trạng thái ban đầu. Đầu ra bị loại bỏ. gọi 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 Đặ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 Trình xây dựng cho phiên bản 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 _______56 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 Trình xử lý lỗi để biết 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 (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 tớ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 Đặ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 Đối tượng StreamWriter¶Lớp Trình xây dựng cho phiên bản 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ể _______57 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 Trình xử lý lỗi để biết 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 nội dung của đối tượng được mã hóa vào luồng writelines(list) ¶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 Đặ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, Đối tượng StreamReader¶Lớp Trình xây dựng cho phiên bản 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ể _______58 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 Trình xử lý lỗi để biết 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 bằng 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 Đố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. if optional encoding endings or state markers are available on the stream, these should be read too đườ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 chuyển dưới dạng đối số kích thước cho phương thức 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 pháp 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 Đặ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, Đối tượng StreamReaderWriter¶>>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'42 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 Tạo một phiên bản >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'42. 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 codecs 8 và codecs 7. 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ồngCác thể hiện của >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'42 định nghĩa các giao diện kết hợp của các lớp codecs 8 và codecs 7. 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¶
Thiết kế sao cho người ta có thể sử dụng các hàm xuất xưởng do hàm Tạo một phiên bản 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 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 Các thể hiện của Mã hóa và Unicode¶Chuỗi được lưu trữ nội bộ dưới dạng chuỗi điểm mã trong phạm vi Mã hóa văn bản đơn giản nhất (được gọi là 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'302 (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ó tên là >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'303 và >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'304. Bất lợi của họ là nếu e. g. bạn sử dụng >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'303 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ã. >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'306 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'307 hoặc >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'306, có cái gọi là BOM (“Dấu thứ tự byte”). Đây là ký tự Unicode >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'309. Ký tự này có thể được thêm vào trước mỗi chuỗi byte >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'307 hoặc >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'306. Phiên bản hoán đổi byte của ký tự này ( >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'312) 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'307 hoặc >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'306 có vẻ là một >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'315 thì các byte phải được hoán đổi khi giải mã. Thật không may, ký tự >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'309 có mục đích thứ hai là một >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'317. 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'309 làm >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'317 không được dùng nữa (với >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'320 ( >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'321) đả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ý >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'309 ở 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. marker bits (the most significant bits) and payload bits. Các bit đánh dấu là một chuỗi từ 0 đến 4 bit >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'324 theo sau là bit codecs 40. 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'326 … >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'327 0xxxxxxxx >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'328 … >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'329 110xxxxxx 10xxxxxx >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'330 … >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'331 1110xxxxx 10xxxxxx 10xxxxxx >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'332 … >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'333 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ự >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'309 nào trong chuỗi được giải mã (ngay cả khi đó là ký tự đầu tiên) đều được coi là >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'317 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à >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'336) 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. >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'337, >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'338, >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'339) đượ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
trong iso-8859-1), điều này làm tăng khả năng mã hóa >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'340 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'337, >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'338, >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'339 dưới dạng ba byte đầu tiên vào tệp. Khi giải mã >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'340 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. >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'345 là bí danh hợp lệ cho codec >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'346 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
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 New in version 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 New in version 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 windows-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 chinese, csiso58gb231280, euc-cn, euccn, eucgb2312-cn, gb2312-1980, gb2312-80, iso-ir-58 Simplified Chinese gbk 936, cp936, ms936 Unified Chinese gb18030 gb18030-2000 Unified Chinese hz hzgb, hz-gb, hz-gb-2312 Simplified Chinese 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 Japanese, Korean, Simplified Chinese, Western Europe, Greek 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 latin_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 Esperanto, Maltese iso8859_4 iso-8859-4, latin4, L4 ngôn ngữ Baltic iso8859_5 iso-8859-5, cyrillic Tiếng Bulgary, Tiếng Byelorussia, Tiếng Macedonia, Tiếng Nga, Tiếng Serbia iso8859_6 iso-8859-6, arabic tiếng Ả Rập iso8859_7 iso-8859-7, greek, greek8 người Hy Lạp iso8859_8 iso-8859-8, hebrew tiếng Do Thái iso8859_9 iso-8859-9, latin5, L5 Thổ Nhĩ Kỳ iso8859_10 iso-8859-10, latin6, L6 Nordic languages iso8859_11 iso-8859-11, thai Thai languages iso8859_13 iso-8859-13, latin7, L7 ngôn ngữ Baltic iso8859_14 iso-8859-14, latin8, L8 Celtic languages iso8859_15 iso-8859-15, latin9, L9 Tây Âu iso8859_16 iso-8859-16, latin10, L10 South-Eastern Europe johab 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 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_turkish macturkish Thổ Nhĩ Kỳ ptcp154 csptcp154, pt154, cp154, cyrillic-asian 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 all languages utf_32_be UTF-32BE all languages utf_32_le UTF-32LE all languages utf_16 U16, utf16 all languages utf_16_be UTF-16BE all languages utf_16_le UTF-16LE all languages utf_7 U7, unicode-1-1-utf-7 all languages utf_8 U8, UTF, utf8, cp65001 all languages utf_8_sig all languages Đã thay đổi trong phiên bản 3. 4. The utf-16* and utf-32* encoders no longer allow surrogate code points ( Changed in version 3. 8. >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'349 is now an alias to >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'350. Python Specific Encodings¶A number of predefined codecs are specific to Python, so their codec names have no meaning outside Python. These are listed in the tables below based on the expected input and output types (note that while text encodings are the most common use case for codecs, the underlying codec infrastructure supports arbitrary data transforms rather than just text encodings). For asymmetric codecs, the stated meaning describes the encoding direction Text Encodings¶Các codec sau cung cấp khả năng mã hóa >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'3 và đối tượng giống byte giải mã sang CodecInfo 35, 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'354. Only >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'355 is supported mbcs ansi, dbcs Windows only. Encode the operand according to the ANSI codepage (CP_ACP) oem Windows only. Encode the operand according to the OEM codepage (CP_OEMCP) Mới trong phiên bản 3. 6 palmos Mã hóa của PalmOS 3. 5 mã trừng phạt Implement RFC 3492. Stateful codecs are not supported raw_unicode_escape Latin-1 encoding with >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'356 and >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'357 for other code points. Existing backslashes are not escaped in any way. It is used in the Python pickle protocol undefined Đưa ra một ngoại lệ cho tất cả các chuyển đổi, ngay cả các chuỗi trống. The error handler is ignored unicode_escape Encoding suitable as the contents of a Unicode literal in ASCII-encoded Python source code, except that quotes are not escaped. Decode from Latin-1 source code. Beware that Python source code actually uses UTF-8 by default Changed in version 3. 8. “unicode_internal” codec is removed. Binary Transforms¶The following codecs provide binary transforms. bytes-like object to >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'3 mappings. They are not supported by >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'359 (which only produces CodecInfo 35 output). giải mã bí danh Nghĩa Encoder / decoder base64_codec 1 base64, base_64 Convert the operand to multiline MIME base64 (the result always includes a trailing >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'45) Changed in version 3. 4. accepts any bytes-like object as input for encoding and decoding >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'362 / >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'363 bz2_codec bz2 Compress the operand using bz2 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'364 / >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'365 hex_codec hex Convert the operand to hexadecimal representation, with two digits per byte >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'366 / >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'367 quopri_codec quopri, quotedprintable, quoted_printable Convert the operand to MIME quoted printable >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'368 with >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'369 / >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'370 uu_codec uu Convert the operand using uuencode >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'371 / >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'372 zlib_codec zip, zlib Compress the operand using gzip >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'373 / >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'3741 In addition to bytes-like objects , >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'375 also accepts ASCII-only instances of CodecInfo 35 for decodingNew in version 3. 2. Restoration of the binary transforms. Changed in version 3. 4. Khôi phục bí danh cho phép biến đổi nhị phân. Text Transforms¶The following codec provides a text transform. a >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'379 (which only produces >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'3 output) giải mã bí danh Nghĩa rot_13 rot13 Return the Caesar-cypher encryption of the operand New in version 3. 2. Restoration of the Changed in version 3. 4. Restoration of the >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'382 alias. >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬' 354 — Internationalized Domain Names in Applications¶This module implements RFC 3490 (Internationalized Domain Names in Applications) and RFC 3492 (Nameprep. A Stringprep Profile for Internationalized Domain Names (IDN)). It builds upon the >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'384 encoding and >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'385 If you need the IDNA 2008 standard from RFC 5891 and RFC 5895, use the third-party idna module These RFCs together define a protocol to support non-ASCII characters in domain names. A domain name containing non-ASCII characters (such as >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'386) is converted into an ASCII-compatible encoding (ACE, such as >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'387). The ACE form of the domain name is then used in all places where arbitrary characters are not allowed by the protocol, such as DNS queries, HTTP Host fields, and so on. This conversion is carried out in the application; if possible invisible to the user. The application should transparently convert Unicode domain labels to IDNA on the wire, and convert back ACE labels to Unicode before presenting them to the user Python supports this conversion in several ways. the >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'388 codec performs conversion between Unicode and ACE, separating an input string into labels based on the separator characters defined in 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 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'389 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 ß, ♬'390 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 ß, ♬'391 and >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'392, accept Unicode host names ( >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'391 then also transparently sends an IDNA hostname in the Host field if it sends that field at all) When receiving host names from the wire (such as in reverse name lookup), no automatic conversion to Unicode is performed. applications wishing to present such host names to the user should decode them to Unicode The module >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'354 also implements the nameprep procedure, which performs certain normalizations on host names, to achieve case-insensitivity of international domain names, and to unify similar characters. The nameprep functions can be used directly if desiredencodings. idna. nameprep(label) ¶ Return the nameprepped version of label. The implementation currently assumes query strings, so >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'395 is trueencodings. idna. ToASCII(label) ¶ Convert a label to ASCII, as specified in RFC 3490. >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'396 is assumed to be falseencodings. idna. ToUnicode(label) ¶ Convert a label to Unicode, as specified in RFC 3490 >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬' 397 — Windows ANSI codepage¶This module implements the ANSI codepage (CP_ACP) Availability . Windows. Changed in version 3. 3. Support any error handler. Changed in version 3. 2. Before 3. 2, the errors argument was ignored; >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'46 was always used to encode, and >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬'44 to decode. >>> 'German ß, ♬'.encode(encoding='ascii', errors='backslashreplace') b'German \\xdf, \\u266c' >>> 'German ß, ♬'.encode(encoding='ascii', errors='xmlcharrefreplace') b'German ß, ♬' 400 — UTF-8 codec with BOM signature¶This module implements a variant of the UTF-8 codec. On encoding, a UTF-8 encoded BOM will be prepended to the UTF-8 encoded bytes. For the stateful encoder this is only done once (on the first write to the byte stream). On decoding, an optional UTF-8 encoded BOM at the start of the data will be skipped Mã hóa UTF là gìUTF-8 is one of the most commonly used encodings, and Python often defaults to using it. UTF stands for “ Unicode Transformation Format ”, and the '8' means that 8-bit values are used in the encoding.
UTF là gìUTF-8 là hệ thống mã hóa ký tự . It lets you represent characters as ASCII text, while still allowing for international characters, such as Chinese characters. As of the mid 2020s, UTF-8 is one of the most popular encoding systems. |