多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > windows下文件編碼和讀寫注意

windows下文件編碼和讀寫注意

來源:程序員人生   發布時間:2015-05-04 10:24:57 閱讀次數:4045次

最近寫了1個小工具,主要實現自動搜索指定路徑下所有文本文件內容,并替換指定字符串,記錄下幾個容易出錯誤的地方。
1,fread讀出來的buffer寄存到string里,如果要搜索指定的字符串,比如“中華人民共和國”,首先要肯定文件的編碼格式是甚么?根據文件的編碼格式,對目標串進行編碼轉換后,才能用string.find去進行查找。
而如何判斷文件的編碼格式呢,windows下文本文件1般有兩種字符集,unicode和gbk,根據文件的前3個字節來決定該文件的編碼格式,這3個字節是 “EF BB BF”,如果前3個字節為這3個值,就默許為utf8編碼的,否則默許為gbk。

題外話:固然上面的判斷比較粗略,由于windows下也能夠使用utf16來編碼存儲文件,打開記事本,另存的時候,使用unicode來編碼,或unicode big endian來編碼。windows的記事本會在文件前面用BOM來存儲文件的編碼格式
UTF8編碼的BOM為 EF BB BF
utf16編碼的BOM 為FF FE
utf16 big endian為 FE FF ,
通常uft16也被叫做UCS編碼,通常在windows上我們講unicode編碼,就是指utf16編碼。也有1些術語稱之為寬字符,由于他使用兩個字節來存儲文字,即使是ascii碼,也使用兩個字節來存儲。

那末有人會問,難道單純根據前3個字節來判斷文件編碼格式不會有問題,固然會有問題了,比如你用notepad新建1個文本文件,寫入“聯通”兩個字,然后保存,再次打開,你會發現文件成亂碼了。
為啥呢,由于windows記事本把它當作了utf8編碼來辨認了,到了這里有人會問,不是說utf8都有BOM頭來標識這個是utf8編碼的文件么?沒錯,utf8并沒有強迫使用BOM頭,有BOM頭的utf8文件,也能夠轉換為utf8無bom編碼的格式,可使用notpad++測試下,因此不能notepad不能單純的依托BOM頭來判斷是不是是utf8編碼的,而要對文件中的數據進行簡單的編碼分析來肯定,正是這個緣由,才致使辨認出錯。
首先來看下utf8來的編碼結構,utf8是采取1⑶個字節對字符進行編碼,編碼字節數和unicode字符集有嚴格的對應關系。看下面的對應關系表
Unicode 編碼集                  utf8編碼結構
U0001 ― U007E                   0XXXXXXX
U0080 ― U07FF和U0000        110XXXXX  10XXXXXX
U0800 ― UFFFF                    1110XXXX 10XXXXXX 

聯通的gbk字符集是“C1 AA CD A8”
C1 AA 對應的2進制: 1100 0001, 1010 1010
CD AB 對應的2進制:  1100 1101,  1010 1000
請注意紅色部份,它和UTF8的編碼結構完全1致,因此才誤將其認為是utf8無BOM編碼的文件。可使用notepad++打開來查看這個文件的編碼格式


2,在windows下,換行使用的 來換行,也就是 0D 0A,所以使用2進制來查看文件的時候,會看到換行的地方有很多0D 0A,但是如果fopen的時候僅僅使用 “r”標記來讀文件,會讀不出來0D,必須使用“rb”標記來讀,一樣在寫文件的時候,也要用“wb”來寫,才能吧0D寫進去。


原文查看:http://www.seanyxie.com/windows%E4%B8%8B%E6%96%87%E4%BB%B6%E7%BC%96%E7%A0%81%E5%92%8C%E8%AF%BB%E5%86%99%E6%B3%A8%E6%84%8F/

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 成人国内精品久久久久影 | 一本久道久久综合婷婷五 | 爱爱网网站免费观看 | 国产精品成人久久久 | 亚洲天堂最新网址 | 久久在线免费 | 99久久精品费精品国产一区二 | 小说区图片区综合视频区 | 亚洲一区二区黄色 | 成人精品一区二区久久久 | 中文字幕精品视频 | 成人免费视频一区二区三区 | 国产精品成人免费综合 | 日韩一区二区久久久久久 | 日本在线视频二区 | 久久国产精品视频 | 色老久久精品偷偷鲁一区 | 精品国产乱码久久久久久一区二区 | 天堂mv亚洲mv在线播放9蜜 | 亚洲欧美一区二区三区国产精品 | 亚洲一区二区三区国产精品 | 国产精久久一区二区三区 | 美国美女一级片 | 亚洲欧洲一区二区 | 欧美巨大精品欧美一区二区 | 免费看毛片网站 | 欧美成国产精品 | 美女毛片免费 | 国内精品综合九九久久精品 | 欧美一级在线视频 | 青草青青产国视频在线 | 国产精品合集一区二区三区 | 亚洲系列动漫卡通 | 91国内精品久久久久免费影院 | 亚洲一区在线播放 | miya亚洲私人影院在线 | 边摸边吃奶边做娇喘视频 | 国产午夜精品久久理论片小说 | 国产欧美日韩综合精品一区二区三区 | 亚洲综合第一欧美日韩中文 | 一本之道免费视频 |