Hướng dẫn python bytes to ascii - byte python sang ascii

Tôi đã tạo một bugreport trong Android thông qua ADB và trích xuất tệp báo cáo lớn. Nhưng khi tôi mở và đọc tệp đó, nó in:

Show

Có thể bạn quan tâm

  • Cách xem ngày đầu tiên tham gia Facebook bằng điện thoại, máy tính
  • Phương pháp thích hợp điều chế kim loại Ca từ cal2 là
  • see-saw-syndrome là gì – Nghĩa của từ see-saw-syndrome
  • a smoke bomb là gì – Nghĩa của từ a smoke bomb
  • Vẻ đẹp cổ điển và hiện đại trong khổ 1 bài thơ Tràng giang

Nội dung chính

Bạn Đang Xem: Hướng dẫn python encoding ascii – mã hóa python ascii

  • Điều gì đã thay đổi trong Python 3? ¶
  • Unicode cơ bản
  • Người xử lý lỗi Unicode
  • Tùy chọn nhị phân
  • Xử lý tệp văn bản
  • Các tệp trong mã hóa tương thích ASCII, nỗ lực tốt nhất là chấp nhận được.
  • Các tệp trong mã hóa tương thích ASCII, giảm thiểu rủi ro tham nhũng dữ liệu
  • Các tệp trong một mã hóa cụ thể nền tảng điển hình
  • Các tệp trong một mã hóa nhất quán, được biết đến
  • Các tệp trong một mã hóa nhất quán, được biết đến
  • Làm cách nào để đọc một tệp ASCII trong Python?
  • Làm cách nào để mở một mã hóa tệp trong Python?
  • Làm thế nào để bạn giải mã một tệp trong Python?
  • Python có sử dụng UTF không
>>> f = open('bugreport.txt')
>>> f.read()
Traceback (most recent call last):
  File "", line 1, in 
  File "https://cdn.quatangtiny.com/usr/lib/python3.6/codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 in position 12788794: invalid start byte

>>> f = open('bugreport.txt', encoding='ascii')
>>> f.read()
Traceback (most recent call last):
  File "", line 1, in 
  File "https://cdn.quatangtiny.com/usr/lib/python3.6/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 5455694: ordinal not in range(128)

Dường như cả UTF-8 và ASCII codec đều không thể giải mã được tệp. Sau đó, tôi đã kiểm tra mã hóa tệp bởi hai lệnh: Then I checked the file encoding by two commands: Then I checked the file encoding by two commands:
Then I checked the file encoding by two commands:

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

Chúng cho tôi xem tệp được mã hóa trong ASCII, trong khi tôi không thể mở nó bằng codec ASCII. Một số manh mối khác: 1. Trình thông dịch Python trên là Python 3.6.3. Tôi đã thử Python 2.7,14 và nó đã diễn ra tốt đẹp. 2. Nếu tệp được mở bằng cách thêm các lỗi tham số = ‘bỏ qua’ và mã hóa = ‘ascii’, nó có thể được đọc nhưng tất cả các ký tự Trung Quốc đều bị mất. Some other clues: 1. The above python interpreter is python 3.6.3. I tried python 2.7.14 and it went well. 2. If the file is opened by adding parameters errors=’ignore’ and encoding=’ascii’, it can be read but all Chinese characters are lost. Some other clues: 1. The above python interpreter is python 3.6.3. I tried python 2.7.14 and it went well. 2. If the file is opened by adding parameters errors=’ignore’ and encoding=’ascii’, it can be read but all Chinese characters are lost.
Some other
clues:
1. The above python interpreter is python 3.6.3. I tried python 2.7.14 and it went well.
2. If the file is opened by adding parameters errors=’ignore’ and encoding=’ascii’, it can be read but all Chinese characters are lost.

Vậy làm thế nào tôi có thể mở tệp đặc biệt đó trong Python 3? Ai giúp tôi với?

Nick Coghlan’s Python Ghi chú

Một cuộc thảo luận gần đây về danh sách gửi thư Python-Ideas cho thấy rõ rằng chúng tôi (tức là các nhà phát triển Python cốt lõi) cần cung cấp một số hướng dẫn rõ ràng hơn về cách xử lý các tác vụ xử lý văn bản kích hoạt các ngoại lệ theo mặc định trong Python 3, nhưng trước đó Rug by Python 2 của BLITHE giả định rằng tất cả các tệp được mã hóa trong Lat Latin-1.

Mặc dù chúng tôi sẽ có một cái gì đó trong các tài liệu chính thức trước khi quá lâu, nhưng đây là nỗ lực sơ bộ của riêng tôi trong việc tóm tắt các tùy chọn để xử lý các tệp văn bản và sự đánh đổi khác nhau giữa chúng.

Xem Tắt

  • 1 Điều gì đã thay đổi trong Python 3? ¶ Điều gì đã thay đổi trong Python 3? ¶
  • 2 Unicode cơ bản Unicode cơ bản
  • 3 Người xử lý lỗi Unicode Người xử lý lỗi Unicode
  • 4 Tùy chọn nhị phân Tùy chọn nhị phân
  • 5 Xử lý tệp văn bản Xử lý tệp văn bản
    • 5.1 Các tệp trong mã hóa tương thích ASCII, nỗ lực tốt nhất là chấp nhận được. Các tệp trong mã hóa tương thích ASCII, nỗ lực tốt nhất là chấp nhận được.
    • 5.2 Các tệp trong mã hóa tương thích ASCII, giảm thiểu rủi ro tham nhũng dữ liệu Các tệp trong mã hóa tương thích ASCII, giảm thiểu rủi ro tham nhũng dữ liệu
    • 5.3 Các tệp trong một mã hóa cụ thể nền tảng điển hình Các tệp trong một mã hóa cụ thể nền tảng điển hình
    • 5.4 Các tệp trong một mã hóa nhất quán, được biết đến Các tệp trong một mã hóa nhất quán, được biết đến
    • 5.5 Các tệp trong một mã hóa nhất quán, được biết đến Các tệp trong một mã hóa nhất quán, được biết đến
    • 5.6 Làm cách nào để đọc một tệp ASCII trong Python? Làm cách nào để đọc một tệp ASCII trong Python?
    • 5.7 Làm cách nào để mở một mã hóa tệp trong Python? Làm cách nào để mở một mã hóa tệp trong Python?
    • 5.8 Làm thế nào để bạn giải mã một tệp trong Python? Làm thế nào để bạn giải mã một tệp trong Python?
    • 5.9 Python có sử dụng UTF không Python có sử dụng UTF không

Điều gì đã thay đổi trong Python 3? ¶

Unicode cơ bản

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

Người xử lý lỗi Unicode

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

Tùy chọn nhị phân

Xử lý tệp văn bản

Các tệp trong mã hóa tương thích ASCII, nỗ lực tốt nhất là chấp nhận được.

4).

Các tệp trong mã hóa tương thích ASCII, giảm thiểu rủi ro tham nhũng dữ liệu

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

Các tệp trong một mã hóa cụ thể nền tảng điển hình

Các tệp trong một mã hóa nhất quán, được biết đến

Lưu ý rằng nhiều tính năng tôi thảo luận dưới đây cũng có sẵn trong Python 2, nhưng bạn phải truy cập rõ ràng chúng thông qua loại

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

7 và mô -đun

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

8. Trong Python 3, họ là một phần của hành vi của loại

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

9 và

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

0 tích hợp.

Unicode cơ bản

Người xử lý lỗi Unicode

  1. Tùy chọn nhị phân
  2. Xử lý tệp văn bản
  3. Các tệp trong mã hóa tương thích ASCII, nỗ lực tốt nhất là chấp nhận được.
  4. Vì lý do lịch sử, mã hóa được sử dụng rộng rãi nhất là
    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    1, chỉ có thể xử lý các điểm mã Unicode trong phạm vi 0-0x7F (nghĩa là ASCII là mã hóa 7 bit).

  5. Có rất nhiều mã hóa tương thích ASCII, đảm bảo rằng mọi sự xuất hiện của giá trị ASCII hợp lệ trong dữ liệu nhị phân đều đề cập đến ký tự ASCII tương ứng.
  6. Cấm UTF-8 đang trở thành mã hóa ưa thích cho nhiều ứng dụng, vì đây là mã hóa tương thích ASCII có thể mã hóa bất kỳ điểm mã Unicode hợp lệ nào.
  7. Latin Latin-1 là một mã hóa tương thích ASCII quan trọng khác, vì nó ánh xạ các giá trị byte trực tiếp đến 256 điểm mã Unicode đầu tiên. .
  8. Ngoài ra còn có nhiều mã hóa không tương thích ASCII trong việc sử dụng rộng rãi, đặc biệt là ở các nước châu Á (phải nghĩ ra các giải pháp của riêng họ trước sự gia tăng của Unicode) và trên các nền tảng như Windows, Java và .NET CLR, nơi nhiều API chấp nhận văn bản là UTF -16 dữ liệu được mã hóa.
  9. Cuộc gọi
    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    2 báo cáo mã hóa mà Python sẽ sử dụng theo mặc định cho hầu hết các hoạt động yêu cầu mã hóa (ví dụ: đọc trong tệp văn bản mà không có mã hóa được chỉ định). Điều này được thiết kế để hỗ trợ khả năng tương tác giữa Python và hệ điều hành máy chủ, nhưng có thể gây ra các vấn đề về khả năng tương tác giữa các hệ thống (nếu các vấn đề mã hóa không được quản lý nhất quán).

  10. Cuộc gọi
    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    2 báo cáo mã hóa mà Python sẽ sử dụng theo mặc định cho hầu hết các hoạt động yêu cầu mã hóa (ví dụ: đọc trong tệp văn bản mà không có mã hóa được chỉ định). Điều này được thiết kế để hỗ trợ khả năng tương tác giữa Python và hệ điều hành máy chủ, nhưng có thể gây ra các vấn đề về khả năng tương tác giữa các hệ thống (nếu các vấn đề mã hóa không được quản lý nhất quán).

    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    4)

  11. 3 báo cáo mã hóa mà Python sẽ sử dụng theo mặc định cho hầu hết các hoạt động mà cả hai đều yêu cầu mã hóa và liên quan đến siêu dữ liệu văn bản trong hệ thống tệp (ví dụ: xác định kết quả của

    Nếu bạn là một người nói tiếng Anh bản địa cư trú ở một quốc gia nói tiếng Anh (như tôi!) Nó rất hấp dẫn khi nghĩ rằng nhưng Python 2 hoạt động tốt, tại sao bạn lại làm phiền tôi với tất cả các malarkey Unicode này? Thật đáng để cố gắng nhớ rằng chúng ta thực sự là thiểu số trên hành tinh này và, đối với hầu hết mọi người trên trái đất, ASCII và

    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

Người xử lý lỗi Unicode

Tùy chọn nhị phân

Xử lý tệp văn bản

  • $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    Các tệp trong mã hóa tương thích ASCII, nỗ lực tốt nhất là chấp nhận được.

    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    Vì lý do lịch sử, mã hóa được sử dụng rộng rãi nhất là

    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    1, chỉ có thể xử lý các điểm mã Unicode trong phạm vi 0-0x7F (nghĩa là ASCII là mã hóa 7 bit).

  • $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    Có rất nhiều mã hóa tương thích ASCII, đảm bảo rằng mọi sự xuất hiện của giá trị ASCII hợp lệ trong dữ liệu nhị phân đều đề cập đến ký tự ASCII tương ứng.

  • $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    Cấm UTF-8 đang trở thành mã hóa ưa thích cho nhiều ứng dụng, vì đây là mã hóa tương thích ASCII có thể mã hóa bất kỳ điểm mã Unicode hợp lệ nào.

    Latin Latin-1 là một mã hóa tương thích ASCII quan trọng khác, vì nó ánh xạ các giá trị byte trực tiếp đến 256 điểm mã Unicode đầu tiên. .

    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    Ngoài ra còn có nhiều mã hóa không tương thích ASCII trong việc sử dụng rộng rãi, đặc biệt là ở các nước châu Á (phải nghĩ ra các giải pháp của riêng họ trước sự gia tăng của Unicode) và trên các nền tảng như Windows, Java và .NET CLR, nơi nhiều API chấp nhận văn bản là UTF -16 dữ liệu được mã hóa.

    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    Cuộc gọi

    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

Tùy chọn nhị phân

Xử lý tệp văn bản

Các tệp trong mã hóa tương thích ASCII, nỗ lực tốt nhất là chấp nhận được.

Xử lý tệp văn bản

Phần này khám phá một số trường hợp sử dụng có thể phát sinh khi xử lý văn bản. Mã hóa văn bản là một chủ đề đủ phức tạp mà không có kích thước nào phù hợp với tất cả các câu trả lời – câu trả lời đúng cho một ứng dụng nhất định sẽ phụ thuộc vào các yếu tố như:

  • Bạn có bao nhiêu quyền kiểm soát đối với các mã hóa văn bản được sử dụng
  • Việc tránh thất bại chương trình có quan trọng hơn việc tránh tham nhũng dữ liệu hay ngược lại
  • Lỗi mã hóa phổ biến như thế nào được dự kiến ​​là và liệu chúng cần được xử lý một cách duyên dáng hay đơn giản là có thể bị từ chối như là đầu vào không hợp lệ

Các tệp trong mã hóa tương thích ASCII, nỗ lực tốt nhất là chấp nhận được.

Trường hợp sử dụng: Các tệp được xử lý là trong mã hóa tương thích ASCII, nhưng bạn không biết chính xác cái nào. Tất cả các tệp phải được xử lý mà không kích hoạt bất kỳ ngoại lệ nào, nhưng một số rủi ro tham nhũng dữ liệu được coi là chấp nhận được (ví dụ: đối chiếu các tệp nhật ký từ nhiều nguồn trong đó một số lỗi dữ liệu được chấp nhận, miễn là các bản ghi vẫn còn nguyên vẹn). the files to be processed are in an ASCII compatible encoding, but you don’t know exactly which one. All files must be processed without triggering any exceptions, but some risk of data corruption is deemed acceptable (e.g. collating log files from multiple sources where some data errors are acceptable, so long as the logs remain largely intact). the files to be processed are in an ASCII compatible encoding, but you don’t know exactly which one. All files must be processed without triggering any exceptions, but some risk of data corruption is deemed acceptable (e.g. collating log files from multiple sources where some data errors are acceptable, so long as the logs remain largely
intact).

Cách tiếp cận: Sử dụng mã hóa Latin-1-1 để ánh xạ các giá trị byte trực tiếp đến 256 điểm mã Unicode đầu tiên. Đây là Python 3 tương đương gần nhất cung cấp cho mô hình xử lý văn bản Python 2 cho phép. use the “latin-1” encoding to map byte values directly to the first 256 Unicode code points. This is the closest equivalent Python 3 offers to the permissive Python 2 text handling model. use the “latin-1” encoding to map byte values directly to the first 256 Unicode code points. This is the closest equivalent Python 3 offers to the permissive Python 2 text handling model.

Ví dụ:

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

34

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

34

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

34

Ghi chú

Mặc dù mã hóa Windows

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

35 đôi khi cũng được gọi là Lat Latin-1, nhưng nó không ánh xạ tất cả các giá trị byte có thể, và do đó cần được sử dụng kết hợp với trình xử lý lỗi

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

9 để đảm bảo nó không bao giờ ném

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

3. Mã hóa

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

5 trong Python ISO_8859-1: 1987, ánh xạ tất cả các giá trị byte có thể cho 256 điểm mã Unicode đầu tiên và do đó đảm bảo các lỗi giải mã sẽ không bao giờ xảy ra bất kể trình xử lý lỗi được cấu hình.

Consequences:

  • Dữ liệu sẽ không bị hỏng nếu nó được đọc đơn giản, được xử lý dưới dạng văn bản ASCII và được viết lại.
  • sẽ không bao giờ tăng unicodedecodeerror khi đọc dữ liệu
  • vẫn sẽ tăng UnicodeEncodeError nếu CodePoint trên 0xFF (ví dụ: trích dẫn thông minh được sao chép từ chương trình xử lý văn bản) được thêm vào chuỗi văn bản trước khi nó được mã hóa trở lại byte. Để ngăn chặn các lỗi như vậy, hãy sử dụng trình xử lý lỗi
    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    30 (hoặc một trong các trình xử lý lỗi khác thay thế các điểm mã Unicode mà không có biểu diễn trong mã hóa mục tiêu với các chuỗi của các điểm mã ASCII).

  • Tham nhũng dữ liệu có thể xảy ra nếu dữ liệu nguồn nằm trong mã hóa không tương thích ASCII (ví dụ: UTF-16)
  • Tham nhũng có thể xảy ra nếu dữ liệu được ghi lại bằng cách sử dụng mã hóa khác với
    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    5

  • Tham nhũng có thể xảy ra nếu các phần tử không ASCII của chuỗi được sửa đổi trực tiếp (ví dụ: đối với mã hóa chiều rộng biến như UTF-8 đã được giải mã là
    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    5 thay vào đó, cắt chuỗi tại một điểm tùy ý có thể chia ký tự đa byte thành hai miếng)

Các tệp trong mã hóa tương thích ASCII, giảm thiểu rủi ro tham nhũng dữ liệu

Trường hợp sử dụng: Các tệp được xử lý là trong mã hóa tương thích ASCII, nhưng bạn không biết chính xác cái nào. Tất cả các tệp phải được xử lý mà không kích hoạt bất kỳ ngoại lệ nào, nhưng một số lỗi liên quan đến Unicode đều được chấp nhận để giảm nguy cơ tham nhũng dữ liệu (ví dụ: đối chiếu các tệp nhật ký từ nhiều nguồn đối với các lỗi lập trình vi phạm giả định chỉ viết lại dữ liệu trong mã hóa ban đầu của nó) the files to be processed are in an ASCII compatible encoding, but you don’t know exactly which one. All files must be processed without triggering any exceptions, but some Unicode related errors are acceptable in order to reduce the risk of data corruption (e.g. collating log files from multiple sources, but wanting more explicit notification when the collated data is at risk of corruption due to programming errors that violate the assumption of writing the data back out only in its original encoding) the files to be processed are in an ASCII compatible encoding, but you don’t know exactly which one. All files must be processed without triggering any exceptions, but some Unicode related errors are acceptable in order to reduce the risk of data corruption (e.g. collating log files from multiple sources, but wanting more
explicit notification when the collated data is at risk of corruption due to programming errors that violate the assumption of writing the data back out only in its original encoding)

Cách tiếp cận: Sử dụng mã hóa

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

41 với trình xử lý lỗi

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

9. use the 1 với trình xử lý lỗi 1 với trình xử lý lỗi

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

9. use the

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

1 encoding with the

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

9 error handler.

Ví dụ:

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

44

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

Xem Thêm : Bullous pemphigoid là gì

44

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

44

Consequences:

  • Dữ liệu sẽ không bị hỏng nếu nó được đọc đơn giản, được xử lý dưới dạng văn bản ASCII và được viết lại.
  • sẽ không bao giờ tăng unicodedecodeerror khi đọc dữ liệu
  • vẫn sẽ tăng UnicodeEncodeError nếu CodePoint trên 0xFF (ví dụ: trích dẫn thông minh được sao chép từ chương trình xử lý văn bản) được thêm vào chuỗi văn bản trước khi nó được mã hóa trở lại byte. Để ngăn chặn các lỗi như vậy, hãy sử dụng trình xử lý lỗi
    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    30 (hoặc một trong các trình xử lý lỗi khác thay thế các điểm mã Unicode mà không có biểu diễn trong mã hóa mục tiêu với các chuỗi của các điểm mã ASCII).

  • cũng sẽ tăng unicodeEncodeError nếu một nỗ lực được thực hiện để mã hóa một chuỗi văn bản chứa các giá trị byte thoát ra mà không cho phép trình xử lý lỗi
    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    9 (hoặc một trình xử lý thậm chí có thể chịu được hơn như

    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    30).

  • Một số thư viện xử lý unicode đảm bảo chuỗi điểm mã là văn bản hợp lệ có thể phàn nàn về cơ chế thoát được sử dụng (Tôi sẽ không giải thích ý nghĩa của nó ở đây, nhưng cụm từ của Lone Lone Surrogate là một gợi ý rằng một cái gì đó dọc theo các dòng đó có thể là xảy ra – thực tế là người thay thế của người Hồi giáo cũng xuất hiện trong tên của người xử lý lỗi không phải là một sự trùng hợp ngẫu nhiên).
  • Tham nhũng dữ liệu vẫn có thể xảy ra nếu dữ liệu nguồn nằm trong mã hóa không tương thích ASCII (ví dụ: UTF-16)
  • Tham nhũng dữ liệu vẫn còn có thể nếu các phần thoát của chuỗi được sửa đổi trực tiếp

Các tệp trong một mã hóa cụ thể nền tảng điển hình

Trường hợp sử dụng: Các tệp được xử lý trong một mã hóa nhất quán, mã hóa có thể được xác định từ các chi tiết hệ điều hành và cài đặt ngôn ngữ và có thể từ chối xử lý các tệp không được mã hóa đúng. the files to be processed are in a consistent encoding, the encoding can be determined from the OS details and locale settings and it is acceptable to refuse to process files that are not properly encoded. the files to be processed are in a consistent encoding, the encoding can be determined from the OS details and locale settings and it is acceptable to refuse to process files that are not properly encoded. the files to be processed are in a consistent encoding, the encoding can be determined from the OS details and locale settings and it is acceptable to refuse to process files that are not properly encoded.

Cách tiếp cận: Chỉ cần mở tệp trong chế độ văn bản. Trường hợp sử dụng này mô tả hành vi mặc định trong Python 3. simply open the file in text mode. This use case describes the default behaviour in Python 3. simply open the file in text mode. This use case describes the default behaviour in Python 3. simply open the file in text mode. This use case describes the default behaviour in Python 3.

Ví dụ:

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

48

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

48

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

48

Consequences:

  • $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    Xem Thêm : Bullous pemphigoid là gì

    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    2)

  • $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    Dữ liệu sẽ không bị hỏng nếu nó được đọc đơn giản, được xử lý dưới dạng văn bản ASCII và được viết lại.

  • sẽ không bao giờ tăng unicodedecodeerror khi đọc dữ liệu

    vẫn sẽ tăng UnicodeEncodeError nếu CodePoint trên 0xFF (ví dụ: trích dẫn thông minh được sao chép từ chương trình xử lý văn bản) được thêm vào chuỗi văn bản trước khi nó được mã hóa trở lại byte. Để ngăn chặn các lỗi như vậy, hãy sử dụng trình xử lý lỗi

    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

30 (hoặc một trong các trình xử lý lỗi khác thay thế các điểm mã Unicode mà không có biểu diễn trong mã hóa mục tiêu với các chuỗi của các điểm mã ASCII).

cũng sẽ tăng unicodeEncodeError nếu một nỗ lực được thực hiện để mã hóa một chuỗi văn bản chứa các giá trị byte thoát ra mà không cho phép trình xử lý lỗi

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii
the files to be processed are nominally in a consistent encoding, you know the exact encoding in advance and it is acceptable to refuse to process files that are not properly encoded. This is becoming more and more common, especially with many text file formats beginning to standardise on UTF-8 as the preferred text
encoding.

9 (hoặc một trình xử lý thậm chí có thể chịu được hơn như open the file in text mode with the appropriate encoding

Ví dụ:

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

33

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

33

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

33

Consequences:

  • $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    Xem Thêm : Bullous pemphigoid là gì

  • $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    Dữ liệu sẽ không bị hỏng nếu nó được đọc đơn giản, được xử lý dưới dạng văn bản ASCII và được viết lại.

  • Trình xử lý lỗi
    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    9 có thể được sử dụng để có nhiều lỗi mã hóa hơn nếu cần phải nỗ lực tốt nhất để xử lý các tệp có chứa các lỗi đó thay vì từ chối chúng hoàn toàn như đầu vào không hợp lệ.

Các tệp trong một mã hóa nhất quán, được biết đến

Trường hợp sử dụng: Các tệp được xử lý trên danh nghĩa trong một mã hóa nhất quán, bạn biết mã hóa chính xác trước và có thể chấp nhận từ chối xử lý các tệp không được mã hóa đúng. Điều này ngày càng trở nên phổ biến hơn, đặc biệt là với nhiều định dạng tệp văn bản bắt đầu chuẩn hóa trên UTF-8 như mã hóa văn bản ưa thích. the files to be processed are nominally in a consistent encoding, you know the exact encoding in advance and it is acceptable to refuse to process files that are not properly encoded. This is becoming more and more common, especially with many text file formats beginning to standardise on UTF-8 as the preferred text encoding. the files to be processed include markers that specify the nominal encoding (with a default encoding assumed if no marker is present) and it is acceptable to refuse to process files that are not properly encoded. the files to be processed include markers that specify the nominal encoding (with a default encoding assumed if no marker is present) and it is acceptable to refuse to process files that are not properly encoded.

Cách tiếp cận: Mở tệp ở chế độ văn bản với mã hóa thích hợp open the file in text mode with the appropriate encoding first open the file in binary mode to look for the encoding marker, then reopen in text mode with the identified encoding. first open the file in binary mode to look for the encoding
marker, then reopen in text mode with the identified encoding.

Ví dụ:

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

33

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

33

$ enca bugreport.txt
7bit ASCII characters
$ file -i bugreport.txt
bugreport.txt: text/plain; charset=us-ascii

37 uses PEP 263 encoding markers to detect the encoding of Python source files (defaulting to UTF-8 if no encoding marker is detected)

Consequences:

  • $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    3 có thể bị ném khi đọc các tệp đó (nếu dữ liệu không thực sự trong mã hóa được chỉ định)

  • Trình xử lý lỗi
    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    9 có thể được sử dụng để có nhiều lỗi mã hóa hơn nếu cần phải nỗ lực tốt nhất để xử lý các tệp có chứa các lỗi đó thay vì từ chối chúng hoàn toàn như đầu vào không hợp lệ.

  • Trường hợp sử dụng: Các tệp được xử lý trên danh nghĩa trong một mã hóa nhất quán, bạn biết mã hóa chính xác trước và có thể chấp nhận từ chối xử lý các tệp không được mã hóa đúng. Điều này ngày càng trở nên phổ biến hơn, đặc biệt là với nhiều định dạng tệp văn bản bắt đầu chuẩn hóa trên UTF-8 như mã hóa văn bản ưa thích. the files to be processed include markers that specify the nominal encoding (with a default encoding assumed if no marker is present) and it is acceptable to refuse to process files that are not properly encoded.
  • Cách tiếp cận: Trước tiên, hãy mở tệp ở chế độ nhị phân để tìm điểm đánh dấu mã hóa, sau đó mở lại ở chế độ văn bản với mã hóa được xác định.
  • Trình xử lý lỗi
    $ enca bugreport.txt
    7bit ASCII characters
    $ file -i bugreport.txt
    bugreport.txt: text/plain; charset=us-ascii
    

    9 có thể được sử dụng để có nhiều lỗi mã hóa hơn nếu cần phải nỗ lực tốt nhất để xử lý các tệp có chứa các lỗi đó thay vì từ chối chúng hoàn toàn như đầu vào không hợp lệ.

Các tệp trong một mã hóa nhất quán, được biết đến

Trường hợp sử dụng: Các tệp được xử lý trên danh nghĩa trong một mã hóa nhất quán, bạn biết mã hóa chính xác trước và có thể chấp nhận từ chối xử lý các tệp không được mã hóa đúng. Điều này ngày càng trở nên phổ biến hơn, đặc biệt là với nhiều định dạng tệp văn bản bắt đầu chuẩn hóa trên UTF-8 như mã hóa văn bản ưa thích. the files to be processed are nominally in a consistent encoding, you know the exact encoding in advance and it is acceptable to refuse to process files that are not properly encoded. This is becoming more and more common, especially with many text file formats beginning to standardise on UTF-8 as the preferred text encoding. the files to be processed include markers that specify the nominal encoding (with a default encoding assumed if no marker is present) and it is acceptable to refuse to process files that are not properly encoded.

Cách tiếp cận: Mở tệp ở chế độ văn bản với mã hóa thích hợp open the file in text mode with the appropriate encoding first open the file in binary mode to look for the encoding marker, then reopen in text mode with the identified encoding.
string. Method 2: Open the whole file at once as a list of lines (i.e. each element in list = one line of the file). Method 3: Open a file “line-by-line”.

Ví dụ:

37 uses PEP 263 encoding markers to detect the encoding of Python source files (defaulting to UTF-8 if no encoding marker is detected)

3 có thể bị ném khi đọc các tệp đó (nếu dữ liệu không thực sự trong mã hóa được chỉ định)

9 có thể được sử dụng để có nhiều lỗi mã hóa hơn nếu cần phải nỗ lực tốt nhất để xử lý các tệp có chứa các lỗi đó thay vì từ chối chúng hoàn toàn như đầu vào không hợp lệ.
accepts the encoding of the encoding string to decode it and returns the original string.

Python có sử dụng UTF không

UTF-8 là một trong những mã hóa đượ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.(Ngoài ra còn có mã hóa UTF-16 và UTF-32, nhưng chúng ít được sử dụng hơn UTF-8.)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. (There are also UTF-16 and UTF-32 encodings, but they are less frequently used than UTF-8.)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. (There are also UTF-16 and UTF-32 encodings, but they are less frequently used than UTF-8.)
it. UTF stands for “Unicode Transformation Format”, and the ‘8’ means that 8-bit values are used in the encoding. (There are also UTF-16 and UTF-32 encodings, but they are less frequently used than UTF-8.)

Nguồn: https://quatangtiny.com Danh mục: Blog
Danh mục: Blog