不知道各位會不會遇到"錕斤拷�⊠",傳說中了中文亂碼
電腦顯示文字,就是以下三項所形成的金三角:字元、字元集及字元編碼:
- 字元:
字元,就是你現在在生活中看到的所有文字:abcdefghijklmn...、ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒ...、1234567890...,這些都屬於字元,簡單說就是文字。但電腦...一個也看不懂() - 字元集:
字元集,把一堆字元編成電腦看得懂的表格,94字元集 - 字元編碼:
各種字元集...
想像一下,如果世上只有"企"、"鵝"、"哥"、"。"的話,我們把它編成以下表格:
0 | 1 | |
0 | 企 | 鵝 |
1 | 哥 | 。 |
好,依照上面的表格告訴我:00 01 10 11代表甚麼?A:企鵝哥。(反白)
在現實世界中,電腦的一個字為1Bytes(8Bit),8Bit×一個Bit有0和1兩種形式=>2×2×2×2×2×2×2×2=256
所以一個字元最多可以表示256種文字,聽起來很少?對於發明電腦的老外們:不!
所以老美(USA)在60年代搞出了ASCII(American Standard Code for Information Interchange,美國標準資訊交換碼)這個字元集:
如上圖,A=65=1000001,事情都很簡單,但是統一這件事你以為簡單,但...P啦!自己開估狗翻譯你會看到,光估狗就收錄了快100多種語言,那如何編碼?
英文一共用一用128個字元將將好,另外一半...就給西歐搞出了所謂EASCII(Extended ASCII,延伸美國標準資訊交換碼),西班牙語的注音、法語字母、數學特殊符號...各國都有自己的EASCII,最終被老外弄出了快200種EASCII,舉例來說,10001110在Windows1250 EASCII代表、1251 EASCII代表。這時亞州的台灣、中華民國大陸淪陷區、老日都還在喝喝茶聊聊天打打仗,一副事不關己的模樣(也真是如此啦XD)。
接下來中、日、韓等國家碰到電腦,事情比剛剛那檔事更慘:漢字,這東西的數量,那可真是太多了...
256個字元和數以萬計的字元組成的漢字,哪夠用啊!!! 所以我們使用兩個Byte來編碼,共有65536個字元可供編碼,半形逗號:0010 1100、全形逗號1111 1111 0000 1100,但是這六萬個仍然不夠總數十萬多個字的漢字用,造成有些人名字打不出來只好改名、也造就了⊠⊠⊠⊠⊠⊠⊠⊠⊠⊠的字元的誕生。但是改版後還是會有問題:,人名的字體顯得格格不入,那你說我名字怎麼辦?你的字體只要不包含在字元集GB2312(剛剛講的第一個字元集,中華民國大陸淪陷區首當其衝做出了這個東西),電腦被搞得不耐煩,微軟只好編寫出GBK(漢字內碼擴展規範,簡稱GBK)來應急。
人類,終究被逼急了。
面臨二選一:全部砍掉重練還是統一?理所當然,砍掉重練太極端了,所以只好全部統一;於是,人類文字編碼界的巴別塔:UNICODE(不是UNESCO),就此誕生。
Unicode,萬國碼聯盟官方中文名稱為統一碼[1],又譯作萬國碼、統一字元碼、統一字符編碼,是統一字符編碼標準(The Unicode Standard) 來自維基百科 |
萬國碼野心很大,一上任就收服25種語言,包括GBK的一堆東西。於是萬國碼改用"書寫系統"為標準,英語、德語、西班牙、法語等語言,都屬於同一套書寫系統:拉丁字母。拉丁字母、西里爾字母和希臘字母的O,幾乎一樣,但是因為上面提到的200多種字元編碼,於是這三個O全部給它對應位置,至於簡體字、繁體字、日本、朝鮮漢字等,全部歸類在"中日韓統一表意文字,CJK United Ideograph",大同小異的東西,萬國碼統一給他一個碼位,願望是好的,但坑也挖了不少的。
apple.com,看上去是蘋果官網,但這個a卻是西里爾字母的a,釣魚網站Maker成功!
還沒完,你現在的每一種文字都是一種編碼方式,但萬國碼卻有一堆編碼方式,所以記事本才會有一堆編碼方式給你選:
如圖,同一串二進位在UTF-8和GBK編碼中,意義不同,因而出現了"錕斤拷"
錯誤的編碼打開文本=>亂碼
還記得GBK嗎?它和Unicode碰撞就形成了錕斤拷
你現在打了一篇txt檔,用GBK出來傳給別人,她用UTF-8打開,就形成了:
記事本懵了?這到底是尛?於是記事本在她不認識的文字變出了��������。她(朋友)也懵了,改發給她室友,用UTF-8存,存完交給室友。保存的那一瞬間,�備用UTF-8編成0xEF BF BD。這位雖鬼朋友打開,她用GBK開,有兩個�相連就會變出EFBF BDEF EFBD=錕斤拷,滿滿的錕斤拷就此誕生:
記事本-未命名: |
錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷錕斤拷 |
,兩個問號變一個錕斤拷,滿滿問號就變成...()
早期的系統:ANSI、GBK、UTF-8,而Word就會問你,猜猜看哪一種才是正確編碼?
結束,文章參考資料:
留言列表