簡體   English   中英

“utf-8-sig”是否適合解碼 UTF-8 和 UTF-8 BOM?

[英]Is "utf-8-sig" suitable for decoding both UTF-8 and UTF-8 BOM?

我正在使用 Python CSV 庫讀取兩個 CSV 文件。

一個是用UTF-8-BOM編碼的,另一個是用UTF-8編碼的。在我的實踐中,我發現這兩個文件都可以使用“utf-8-sig”作為編碼類型來讀取:

from csv import reader 
with open(file_path, encoding='utf-8-sig') as csv_file:
    c_reader = reader(csv_file, delimiter=',')
    headers = next(c_reader)    
    for row in c_reader:
        print(row)

我想確認一下,“utf-8-sig”是否適合解碼 UTF-8 和 UTF-8 BOM? 我正在使用 Python 版本 3.6 和 3.7。 感謝您的回答!

utf-8-sig 編解碼器將解碼 utf-8-sig 編碼的文本和使用標准 utf-8 編碼的文本

>>> s = 'Straße'
>>> utf8_sig = s.encode('utf-8-sig')
>>> utf8 = s.encode('utf')
>>> print(utf8_sig.decode('utf-8-sig'))
Straße
>>> print(utf8.decode('utf-8-sig'))
Straße

從編解碼器文檔

在將 Unicode 個字符中的任何一個寫入文件之前,將寫入一個 UTF-8 編碼的 BOM(看起來像這樣的字節序列:0xef、0xbb、0xbf)...在解碼 utf-8-sig 時將跳過這三個字節,如果它們顯示為文件中的前三個字節。

utf-8-sig 編碼在 Windows 環境中最常見。 如果您在 mac 或 *nix 系統上與用戶共享文件,標准 utf-8 編碼是他們希望收到的。

暫無
暫無

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

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