去除\ufeff - 台部落

文章推薦指數: 80 %
投票人數:10人

去除\ufeff. 原創 丿灬安之若死 2018-12-08 03:20. 語言:python. 編程工具:pycharm. 硬件環境:win10 64位. 讀取文件過程中發現一個問題:已有記事本文件(非空), ... 請輸入正確的登錄賬號或密碼 註冊 忘記密碼 首頁 pythonbug 正文 去除\ufeff 原創 丿灬安之若死 2018-12-0803:20 語言:python 編程工具:pycharm 硬件環境:win1064位 讀取文件過程中發現一個問題:已有記事本文件(非空),轉碼UTF-8,複製到pycharm中,在開始位置打印結果會出現 \ufeff,打印代碼如下 f=open('new2.txt',encoding='UTF-8')#打開文件,以UTF-8編碼 l=[] forlineinf: l.append(line.strip()) print(l)  打印結果爲:  只需改一下編碼就行,把UTF-8編碼改成UTF-8-sig f=open('new2.txt',encoding='UTF-8-sig') l=[] forlineinf: l.append(line.strip()) print(l) 打印結果爲:    utf-8與utf-8-sig兩種編碼格式的區別: AsUTF-8isan8-bitencodingnoBOMisrequiredandanyU+FEFFcharacterinthedecodedUnicodestring(evenifit’sthefirstcharacter)istreatedasaZEROWIDTHNO-BREAKSPACE. UTF-8以字節爲編碼單元,它的字節順序在所有系統中都是一様的,沒有字節序的問題,也因此它實際上並不需要BOM(“ByteOrderMark”)。

但是UTF-8withBOM即utf-8-sig需要提供BOM。

關於\ufeff的一些資料(引自維基百科): 字節順序標記(英語:byte-ordermark,BOM)是位於碼點U+FEFF的統一碼字符的名稱。

當以UTF-16或UTF-32來將UCS/統一碼字符所組成的字符串編碼時,這個字符被用來標示其字節序。

它常被用來當做標示文件是以UTF-8、UTF-16或UTF-32編碼的記號。

  字符U+FEFF如果出現在字節流的開頭,則用來標識該字節流的字節序,是高位在前還是低位在前。

如果它出現在字節流的中間,則表達零寬度非換行空格的意義,用戶看起來就是一個空格。

從Unicode3.2開始,U+FEFF只能出現在字節流的開頭,只能用於標識字節序,就如它的名稱——字節序標記——所表示的一樣;除此以外的用法已被捨棄。

取而代之的是,使用U+2060來表達零寬度無斷空白。

在UTF-16中,字節順序標記被放置爲文件或字符串流的第一個字符,以標示在此文件或字符串流中,以所有十六比特爲單位的字碼的尾序(字節順序)。

如果十六比特單位被表示成大尾序,這字節順序標記字符在序列中將呈現0xFE,其後跟着0xFF(其中的0x用來標示十六進制)。

如果十六比特單位使用小尾序,這個字節序列爲0xFF,其後接着0xFE。

而統一碼中,值爲U+FFFE的碼位被保證將不會被指定成一個統一碼字符。

這意味着0xFF、0xFE將只能被解釋成小尾序中的U+FEFF(因爲不可能是大尾序中的U+FFFE)。

UTF-8則沒有字節順序的議題。

UTF-8編碼過的字節順序標記則被用來標示它是UTF-8的文件。

它只用來標示一個UTF-8的文件,而不用來說明字節順序。

[1]許多視窗程序(包含記事本)會添加字節順序標記到UTF-8文件。

然而,在類Unix系統(大量使用文本文件,用於文件格式,用於進程間通信)中,這種做法則不被建議採用。

因爲它會妨礙到如解譯器腳本開頭的Shebang等的一些重要的碼的正確處理。

它亦會影響到無法識別它的編程語言。

如gcc會報告源碼檔開頭有無法識別的字符。

而在PHP中,如果沒有激活輸出緩衝(outputbuffering),它會使得頁面內容開始被送往瀏覽器(即:用戶頭文件已被提交),這使PHP腳本無法指定用戶頭文件(HTTPHeader)。

字節順序標記在UTF-8中被表示爲序列EFBBBF,對大部分未準備好處理UTF-8的文本編輯器及網頁瀏覽器而言,在ISO-8859-1的環境中則會顯示。

雖然字節順序標記亦可以用於UTF-32,但這個編碼很少用於傳輸,其規則如同UTF-16。

對於已於IANA註冊的字符集UTF-16BE、UTF-16LE、UTF-32BE和UTF-32LE等來說,不可使用字節順序標記。

文檔開頭的U+FEFF會被解釋成一個(已捨棄的)"零寬度無斷空白",因爲這些字符集的名字已決定了其字節順序。

對於已註冊字符集UTF-16和UTF-32來說,一個開頭的U+FEFF則用來表示字節順序。

  分類: Python學習過程所遇種種 好文要頂 關注我 收藏該文   颯藍關注-0粉絲-7 +加關注 3 0 « 上一篇:python定義函數時的默認返回值» 下一篇:WinError5 posted@ 2018-04-0216:32 颯藍 閱讀(5814)評論(2) 編輯 收藏 評論列表    #1樓 2018-08-1516:06 UnknownTarget   翻了好幾篇帖子,提到了codecs.BOM_UTF8(\xef\xbb\xbf)等等,還是你這方法最簡單啊 支持(0)反對(0)    #2樓 2018-10-3013:14 Aifore   成功解決了我的問題 支持(0)反對(0) 刷新評論刷新頁面返回頂部 註冊用戶登錄後才能發表評論,請 登錄 或 註冊,訪問網站首頁。

相關博文: · 去除HTML · python----------文件操作 · 去除空格 · Python自動化運維課程學習--Day3 · ①②python文件操作及文件增刪改查 最新新聞: · 意想不到抗衰老藥物:這種常見分子竟能殺死衰老細胞 · 谷歌上線PocketGallery:帶你領略畫家維米爾所有36幅畫作 · 偷電挖礦、去伊朗挖礦,熊市裏的二手礦機都去哪了? · 三星專利:手錶上整合指紋傳感器未來還要整合揚聲器和虹膜識別 · 微軟向Code.org注資1000萬美元推動美國計算機科學教育 » 更多新聞... 公告 暱稱:颯藍 園齡:1年6個月 粉絲:7 關注:0 +加關注 < 2018年12月 > 日 一 二 三 四 五 六 25 26 27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 搜索     常用鏈接 我的隨筆 我的評論 我的參與 最新評論 我的標籤 隨筆分類 Python學習過程所遇種種(4) 隨筆檔案 2018年7月(1) 2018年4月(1) 2018年3月(2) 文章分類 Python自動化測試學習筆記(24) 最新評論 1.Re:去除\ufeff 成功解決了我的問題 --Aifore 2.Re:去除\ufeff 翻了好幾篇帖子,提到了codecs.BOM_UTF8(\xef\xbb\xbf)等等,還是你這方法最簡單啊 --UnknownTarget 3.Re:python定義函數時的默認返回值 @lzs_ray謝謝,豁然開朗... --颯藍 4.Re:python定義函數時的默認返回值 defnow():returnprint('2018-03-20')print(now())你return的是print這個內置函數的值,,,改成return'2018-03-20'就行......... --lzs_ray 閱讀排行榜 1.去除\ufeff(5815) 2.python定義函數時的默認返回值(1553) 3.print多重打印(36) 4.WinError5(11) 評論排行榜 1.python定義函數時的默認返回值(2) 2.去除\ufeff(2) 推薦排行榜 1.去除\ufeff(3) 2.python定義函數時的默認返回值(1) 發表評論 登录 所有評論 還沒有人評論,想成為第一個評論的人麼?請在上方評論欄輸入並且點擊發布. 相關文章 踩到了不可見字符\u200B的坑(0長度的字符) 丿灬安之若死 2019-07-3014:24:36 pythonbug(十一)——tensorflow.python.framework.errors_impl.InvalidArgumentError 马大哈先生 2019-06-1520:57:01 pythonbug(十)——Objectwasneverused(typeclass'tensorflow.python.framework.ops.Tensor' 马大哈先生 2019-06-1219:49:08 xml文件轉化成tfrecord格式出現錯誤TypeError:NonehastypeNoneType,butexpectedoneof:int,long 马大哈先生 2019-05-0912:37:20 pythonbug(八)——關於FileNotFoundError:[Errno2]Nosuchfileordirectory:'XXX’ 马大哈先生 2019-05-0506:28:24 pythonbug(八)——IndexError:listindexoutofrange 马大哈先生 2019-05-0506:28:23 UnicodeDecodeError:'ascii'codeccan'tdecodebyte0x90inposition614:ordinalnotinrange(128) 马大哈先生 2019-04-2322:24:46 關於DuplicateFlagError:Theflag‘xxx'isdefinedtwice.的錯誤處理 马大哈先生 2019-04-0419:56:14 ModuleNotFoundError:Nomodulenamed'pandas' 马大哈先生 2019-04-0419:56:14 from.cv2import*ImportError:DLLloadfailed:找不到指定的模塊。

马大哈先生 2019-03-1904:28:05 Python3.6版本Pytesseract圖像驗證碼識別PyCharm報錯FileNotFoundErro 丿灬安之若死 2019-03-1714:21:02 Nomodulenamed'pip._internal' 柚_子 2019-03-0619:30:13 pythonbug(一)——pythonTabError:Inconsistentuseoftabsandspacesinindentation 马大哈先生 2018-12-2701:42:41 pyhton學習之ModuleNotFoundError:Nomodulenamed'win32api'錯誤 丿灬安之若死 2018-11-1301:26:34 【已經解決】Pythonselenium.common.exceptions.WebDriverException 丿灬安之若死 2018-10-1311:14:41 丿 丿灬安之若死 24小時熱門文章 k8s入門之常見問題&命令 鬱金香用C寫一個定時器來循環獲取陽光 一文讀懂MySQL索引 09你這導師太假了,不如換個學術大佬! 高代技巧小記 11導師讓你造航母怎麼辦? 10我可以不用發論文了? 12水論文如何吹一個好故事 這個外包公司太噁心了。



進去請三思! 本次秋招最差面試體驗給到華爲! 最新文章 【49】kotlin註解處理器 【24】kotlin內部類匿名內部類 【29】kotlin尾遞歸優化tailrec 【23】kotlin數據類noarg和allopen插件的使用 git批量解決。

bothmodified: 最新評論文章 [2022]TopRatedCheckPoint156-315.80ExamQuestions QualifiedWritingServiceinAustraliacanallowstudentstoachievebettergrades Takeassignmenthelpertoresolvethepaperquerieseasily UpdatedCompTIADA0-001ExamQuestions(2022) 美國黑金效果和其它速效藥的不同之處 MicrosoftDP-500PDFQuestion[2022]-SecretToPassExamInFirstAttempt-[PremiumDumps]



請為這篇文章評分?