1. 程式人生 > >程式設計師永遠的痛之字元編碼的奧祕

程式設計師永遠的痛之字元編碼的奧祕

字 符編碼相信是每個程式設計師的噩夢,只要是有中文的地方,總是會遇到各種編碼的問題,並且這種問題還非常難纏,尤其在linux上,因為上面很多軟體都是針對 英語國家開發的,是不會考慮其他語種編碼問題。在遇到編碼的無數大坑之後,我決定仔細研究下編碼問題,因為這就像一道坎一直橫在你面前,每次到這裡你都會 跌到,每次爬起來之後,你都若無其事,這樣的人被稱作戰士,真正的戰士。可惜是個力量戰士,做為新時代的智力戰士,當然不能在那跌到然後又在這繼續跌到。

     檔案的儲存方式:      檔案都有自己的儲存格式,比如最常見的txt,cpp,h,c,xml ,png, rmvb各種格式,還有自定義格式。這些檔案不論是什麼格式,都是儲存在計算機硬盤裡的2進位制格儲存,對應不同檔案格式,有不同的軟體解析。這篇文章不談 檔案是如何儲存的,只談檔案是如何解析的。      文字檔案解析:
     文字檔案對應於人類可以閱讀的文字,如何從2進位制轉換為文字檔案呢?起初由於計算機在美國發明,自然大家考慮的是英語如何表示,英語字母總共26個,加 上特殊字元,128個字元,7位既一個byte即可表示出來。這個就是大家所熟知的ascill編碼。對應關係很簡單,一個字元對應一一個byte。      但很快發現,其他非英語國家的文字遠遠超過ascill碼,這時候大家當然想統一字元編碼,不同國家出了自己不同的編碼方式,中國的gb2312就是自 己做出來的編碼方式,這樣下去每個國家都有自己的編碼方式,來回轉換太麻煩了。這時候出現了新的編碼方式,unicode編碼方式,想將編碼統一,所以規 定了每個字元對應的unicode碼。      1、很多檔案都是ascii編碼,如果用unicode 太浪費。      2、沒有標誌位說明該幾個位元組來解析為一個符號。      這時候拯救世界的utf出現了,utf是unicode的一種實現,只不過更聰明瞭。utf16是佔用兩位元組,或者四位元組,utf32是佔用四位元組。utf8是很聰明的一種表示方式。      1、對於單位元組符號,位元組第一位為0,後面7位表示位元組編碼。      2、對於n位元組符號,第一位元組的前n位都設為1,第n+1位為0,其餘位為編碼位置。 對於不同的編碼,在文字的最前方有不同的標誌,unicode 通常有兩位來表示分別是ff fe, 或者feff, fffe表示big-endian 編碼feff表示litte-endian編碼。utf8是efbbbf來開頭的。可以看出來utf-8是自解釋的,所以不用帶這個標誌檔案,大多數程式 是可以識別的。但有些程式不能識別這個標誌,比如php就會直接把這個標誌當文字解析,不會忽略。相信很多遇到php輸出文字解析亂碼或者解析錯誤的同學 都遇到這樣的問題。     如何解決問題:
    如果有vim那最好不過了,去掉命令:     set encoding=utf-8     set nobomb     新增命令:     set encoding=utf-8     set bomb    或者使用notepad++自帶的功能

相關推薦

程式設計師永遠字元編碼奧祕

字 符編碼相信是每個程式設計師的噩夢,只要是有中文的地方,總是會遇到各種編碼的問題,並且這種問題還非常難纏,尤其在linux上,因為上面很多軟體都是針對 英語國家開發的,是不會考慮其他語種編碼問題。在遇到編碼的無數大坑之後,我決定仔細研究下編碼問題,因為這就像一道坎一直橫

程式設計師的學歷

點選上方“CSDN”,選擇“置頂公眾號”關鍵時刻,第一時間送達!作者簡介:Tamic,程式猿,業

一個Java程式設計師的阿里

前言 最近有些朋友在面試阿里,加上 Java-Interview 專案的原因也有小夥伴和我討論,近期也在負責部門的招牌,這讓我想起年初那段長達三個月的奇葩面試經歷。 本來沒想拿出來說的,畢竟最後也沒成。 但由於那幾個月的經歷讓我瞭解到了大廠的工作方式、對候選同學的考察重點以及面試官的套路

我也能做CTO程式設計師職業規劃 五 情商

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

黑馬程式設計師----Java基礎反射

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

黑馬程式設計師----Java基礎GUI

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

黑馬程式設計師----Java基礎IO包中其它類

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

黑馬程式設計師----Java基礎集合類(一)

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

黑馬程式設計師----Java基礎String類

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

黑馬程式設計師----Java基礎多執行緒

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

黑馬程式設計師----Java基礎面向物件(最終篇)

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

黑馬程式設計師----Java基礎面向物件(封裝 繼承 多型)(二)

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

黑馬程式設計師----Java基礎面向物件(封裝 繼承 多型)

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

黑馬程式設計師----java基礎面向物件

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

黑馬程式設計師——Java基礎函式與陣列

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g

Javascript筆記(四)字元編碼(綜合講述)

前言 在講解本章節的時候,我們需要了解到一些事情。如果要想做到頁面不亂碼,要求有如下幾個因素。 1、html頁面的<meta charset="UTF-8"/>標籤中的值與html文字的編碼一致,如果不一致會亂碼; 2、瀏覽器不能自動切換編碼; 3、

一個程式設計師的成長路。。。

package xxx.xxx.xxx; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * Map 快取實現 */ public class MapCac

【錢】程式設計師的理財

財務解放,財務自由,一定是每個人都追求的目標,也是最難達成的一個目標。 相比於社會上的絕大多數職業,程式猿,工程師的收入應該還是比較可觀的。 但是儘管這樣,IT行業仍然帶給人極大的不安全感,因為這的確是一個青春飯的行業。 無休止的加班提前透支了工程師的體力,精力,以及安

程式設計師的愛情數字表白

                當程式設計之於愛情就如魚之於熊掌般不可兼得時,該怎麼辦?   在我還沒想出結果的時候,我就失戀了。  是的,我挺遜的。         我就是這麼一個不會處理興趣與愛情的程式設計師。那段刻骨銘心的經歷給了我深深地感嘆與體味。如果說沒有愛情的人生程式設計是不完整的,那因程式設計而

程式設計師面試揭祕程式設計師靠什麼途徑去美國工作?

                對於國內程式設計師來說,通常有三種途徑去美國工作。1.進入跨國公司工作一年以上,然後內部轉組到美國的部門。例如,進入微軟中國工作一年後,申請轉組到美國總部工作,若能批准,則申請L-1簽證去美國工作。2.直接應聘美國公司。這其實沒有想象的那麼難。當前不少美國IT公司直接從國內招人