今天在寫批量*****號造資料的時候出現了問題,其中乙個是報不能轉成int型,後經查詢,發現是utf-8bom頭的問題。
什麼是bom?
在utf-8編碼檔案中bom在檔案頭部,占用三個位元組,用來標示該檔案屬於utf-8編碼。其實utf-8 的bom對uft-8沒有作用,是為了支援utf-16,utf-32才加上的bom,bom簽名的意思就是告訴編輯器當前檔案採用何種編碼,方便編輯器識別,但是bom雖然在編輯器中不顯示,但是會產生輸出,就像多了乙個空行。
類似windows自帶的記事本等軟體,在儲存乙個以utf-8編碼的檔案時,會在檔案開始的地方插入三個不可見的字元(0xef 0xbb 0xbf,即bom)。它是一串隱藏的字元,用於讓記事本等編輯器識別這個檔案是否以utf-8編碼。
當在讀txt時一旦讀到bom頭就會報錯。
處理方法如下:
importcodecs
with open(file_path, "r
") as file:
data =file.read()
data = data.replace(codecs.bom_utf8, ""
) districtlist = data.split('\n'
) file.closed
PHP去除BOM頭的方法
但是php在設計之初並沒有考慮到bom頭的問題,所以在編譯碼的時候很容易出現問題 比如今天遇到的問題,json decode,當解碼的string有bom頭的時候json decode就解析失敗,返回null。為什麼不自動檢測並去除bom頭呢。小吐槽 試了兩種方式能去除掉 1 2 3 result ...
PHP去除BOM頭的方法
bom頭是utf 8來告訴編輯器 我是utf8編碼。它的編碼是 xef xbb xbf 但是php在設計之初並沒有考慮到bom頭的問題,所以在編譯碼的時候很容易出現問題 比如今天遇到的問題,json decode,當解碼的string有bom頭的時候json decode就解析失敗,返回null。為...
PHP去除BOM頭的方法
但是php在設計之初並沒有考慮到bom頭的問題,所以在編譯碼的時候很容易出現問題 比如今天遇到的問題,json decode,當解碼的string有bom頭的時候json decode就解析失敗,返回null。為什麼不自動檢測並去除bom頭呢。小吐槽 試了兩種方式能去除掉 12 3 result t...