去除\ufeff - 台部落
文章推薦指數: 80 %
去除\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]
延伸文章資訊
- 1去除\ufeff的解决方法,python语言- 阑珊0701 - 博客园
- 2Python \ufeff - SYmm 微筆記
去除\ufeff. REF. with open(file_path, mode='r', encoding='UTF-8-sig') as f: s = f.read(). 就是這個可以把那些...
- 3去除\ufeff - Python技術部落格
- 4去除\ufeff - 相关文章 - 术之多
python去除BOM头\ufeff等特殊字符 ... 而\xa0 属于latin1 (ISO/IEC_8859-1)中的扩展字符集字符,代表空白符nbs…
- 5搜索结果_java 怎么去除\ufeff - 百度知道
java 怎么去除\ufeff ... Idea在maven打包时报非法字符: '\ufeff' ,但打开报错的类看没有问题,后来发现是隐蔽字符BOM的 ... \uFEFF(Unicode 编...