簡體   English   中英

讀取文本文件時更改為可識別的編碼?

[英]Change to recognized encoding when reading a text file?

當使用(例如)UTF-8編碼打開文本文件進行閱讀時,是否可以在閱讀過程中更改編碼?

動機:很可能您需要讀取使用非默認編碼編寫的文本文件。 文本格式可能包含有關使用的編碼的信息。 讓一個HTML文件作為示例,或者XML,或者ASCIIDOC,以及許多其他文件。 在這種情況下,編碼信息上方的行僅允許包含ASCII或某些默認編碼。

在Python中,可以以二進制模式讀取文件,然后自行將bytes類型的行轉換為str 當在某行上找到有關編碼的信息時,只需切換將行轉換為unicode字符串時要使用的編碼。

在Python 3中,使用TextIOBase實現文本文件,該文件還定義了encoding屬性, buffer和其他內容。

有什么好方法可以更改編碼信息(用於解碼bytes ),以便以所需的方式解碼下一行?

經典用法是:

  • 以二進制格式(字節字符串)打開文件
  • 讀取大塊並猜測編碼(例如,通過簡單的掃描或使用RegEx)

然后:

  • 關閉文件,然后使用找到的編碼以文本模式重新打開文件,或者
  • 移至開頭:seek(0),以字節字符串讀取整個內容,然后使用找到的編碼對內容進行解碼。

請參見以下示例: 檢測XML文件中的字符編碼(Python配方) 注意:該代碼有些陳舊,但很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM