python 讀取帶BOM的utf-8格式文件


**

UTF有哪些分類?
**

UTF-8分為兩種,一種是不帶BOM的,一種是帶BOM的。其中第一種不帶BOM的是標准形式,第二種帶BOM的主要是微軟的習慣。

**

為什么有BOM的UTF-8?
**
微軟在UTF-8中使用BOM(Byte order mark)是因為這樣可以將UTF-8和ASCII等編碼明確區分開。
windows對於utf-8格式的文件存儲默認是帶有BOM的格式

**

為什么BOM不受歡迎?
**
因為在UNIX環境下,很多的UNIX程序不認識BOM。主要是在UNIX所有腳本語言首行為#!標示,它依賴於shell解析,而很多shell出於兼容的考慮不檢測BOM,所以加進BOM時shell會把它解釋為某個普通字符輸入導致破壞#!標示。比如很多現代腳本語言,例如python,其解釋器本身是能處理BOM的,但是shell卡在這里。
因此我們在linux服務器上讀取這些txt文件時,會遇到如下報錯:
\xef\xbb\xbf…

**

怎么解決?
**
使用codecs庫,將文件轉換為utf-8-sig格式

import codecs

with open("xx.txt",'r','utf-8-sig') as file:
line = file.readlines();
————————————————
版權聲明:本文為CSDN博主「櫻夕夕」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_21460525/java/article/details/66971225


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM