檔案頭多了乙個 ufeff字元

2022-08-26 07:21:09 字數 1330 閱讀 3436

在學習python從檔案中讀取檔案,並將檔案中的字串轉化為列表的時候,發現檔案頭多了乙個\ufeff字元。

這個問題前段時間也遇到過了,同樣是上網搜尋了半天才解決,當時只是把問題解決就過去了,但是今天遇到同樣的問題時,知道有這麼乙個解決方法,但是怎麼做就是想不起來。古人云,好記性不如爛筆頭,一點沒錯。進入正題。

幾個概念性的東西   

anscii:

標準的 anscii 編碼只使用7個位元來表示乙個字元,因此最多編碼128個字元。擴充的 anscii 使用8個位元來表示乙個字元,最多也只能 

編碼 256 個字元。

unicode:

使用2個甚至4個位元組來編碼乙個字元,因此可以將世界上所有的字元進行統一編碼。

utf:

unicode編碼轉換格式,就是用來指導如何將 unicode 編碼成適合檔案儲存和網路傳輸的位元組序列的形式 (unicode ->

str)。像其他的一些編碼方式 gb2312, gb18030, big5 和 utf 的作用是一樣的,只是編碼方式不同。

什麼是bom?

bom = byte order mark

bom是unicode規範中推薦的標記位元組順序的方法。比如說對於utf-16,如果接收者收到的bom是feff,表明這個位元組流是big-endian的;如果收到fffe,就表明這個位元組流是little-endian的。

utf-8不需要bom來表明位元組順序,但可以用bom來表明「我是utf-8編碼」。bom的utf-8編碼是ef bb bf(用ultraedit開啟文字、切換到16進製制可以看到)。所以如果接收者收到以ef bb bf開頭的位元組流,就知道這是utf-8編碼了。
具體方法請看下面**

1 # filename: example.py

2 # conding=utf-8

3 4 f = open("news.txt", "r",encoding='utf-8')

5 file = f.read()

6 file_list = file.split(",")

7 print(file_list)

8 9 file_list2 = file.encode('utf-8').decode('utf-8-sig')

10 print(file_list2)

11 12

13 #列印結果如下

14 ['\ufeff新華社北京2月8日電2月8日']

15 新華社北京2月8日電2月8日

不懂的還很多,慢慢積累。

怎麼多了乙個typename?

請看乙個例子 template t class example 哎,這裡怎麼多了乙個typename?問 不要行嗎?答曰 不行。問 為何?答曰 因為t iterator有三種可能 1.t型別有乙個靜態資料成員,其變數名為iterator 2.t型別有乙個靜態成員函式,其函式名為iterator 3....

2019 我的世界多了乙個 Python

大一時學過 c語言,大三時用 c 控制微控制器,之後就沒有別的和程式設計的交集了。大約十天前下定決心學 python,不開玩笑,版本我選 3。其實我也不是 100 的零基礎,因為一方面,我學過 c 另一方面,我以前看過一些公開課,比如 mit 的 程式設計導論 bit 的 python 語言程式設計...

為什麼檔案含有的字元數多了一?

在閱讀 the c programming language 2nd edition 俗稱k r 時,動手實現了書中的部分示例 結果出現了乙個問題,在stackoverflow上進行了問詢才得到了解決,由於原題是英文,故翻譯成博文與大家分享。問題描述 vim中建立乙個檔案如下 a vbbe 並且在建...