第七章 諜戰(zhàn)風(fēng)云
屏幕上出現(xiàn)了一些亂七八糟的字符,根本就不是我的名字。以我這點微末道行,自然只能向老爹發(fā)出求助的眼神。
「再試試呢?」
老爹掃了小黑屏一眼后,快速按下了Ctrl+Shift+C,然后讓我重新編譯執(zhí)行,小黑屏上果然出現(xiàn)了我的名字。
「老爹,這是怎么回事兒啊,怎么你就按了Ctrl+Shift+C問題就解決了?」
我好奇地問道。
「玥玥啊,為了讓你更容易理解,老爹就用故事的形式為你解釋這個問題吧?!?p> 「好啊好啊,我最喜歡聽故事了?!?p> 我拍手叫好道。
「嗯嗯,話說在第二次世界大戰(zhàn)時期,很多國家都是使用的無線電報來傳輸情報。這個無線電報呢,使用的是摩斯碼來傳輸26個字母10個數(shù)字。
但是呢,由于大家都使用摩斯碼,所以發(fā)送報文的方式都相同,這樣就很容易被破譯了。而在傳輸情報時一旦被敵人截取、破譯,將會造成難以預(yù)計的可怕后果。所以在軍事上使用無線電報,不會直接傳輸字母。
當(dāng)然,對于我們國家來說,根本就沒有辦法直接用摩斯碼傳輸情報,因為摩斯碼里面沒有漢字。像日本、韓國這些國家的文字有很大一部分都是漢字,所以他們同樣不能直接使用無線電報傳輸情報。
那怎么辦呢?
于是當(dāng)時有聰明的人就給每一個漢字編號,在傳輸情報的時候只傳輸漢字編號,收報的人在接收到了漢字的編號后再在根據(jù)編號還原成文字,就知道報文內(nèi)容了。
因為常用的漢字有6700多個,而給漢字編碼又沒有什么規(guī)律可言,所以常人幾乎不可能憑借記憶記住這么多漢字的編號,只能以書面形式記錄下來。而記錄漢字和編號對應(yīng)關(guān)系的書冊,就被稱之為密碼本。
也就是說,只要獲取了密碼本,就能夠破譯電報傳輸?shù)膬?nèi)容了。
為了安全考慮,情報組織會不定時的更換密碼本?!?p> 「嗯嗯,這個我知道。在和爺爺奶奶看抗日題材電視劇的時候,經(jīng)??吹饺毡镜拈g諜和特務(wù)總是想方設(shè)法獲取八路軍的密碼本,而八路軍則是要想盡一切辦法保護(hù)密碼本的安全?!?p> 「是這樣的,所以當(dāng)有己方的情報人員被敵方抓獲后,情報組織就會馬上更換密碼本。假設(shè)在沒有更換密碼本時漢字和編號的關(guān)系如下:放-47045,假-48345,一-53947,周-55004,這個時候收報方能夠正確的解析出發(fā)報方要表達(dá)的意思。
現(xiàn)在因為密碼本有泄露的危險,于是更換了密碼本。新的密碼本中漢字和編號的對應(yīng)關(guān)系發(fā)生了變化:馬-47045,上-48345,進(jìn)-53947,攻-55004,但是敵人拿到了更換前的密碼本,所以他們接收到的消息就還是放假一周,卻不知道真正的意思是馬上進(jìn)攻。
昨天我和你說過字符顯示的原理,每個字符都有自己的編號,就像是密碼本一樣,不過計算機(jī)上不叫密碼本,而叫編碼格式。但是計算機(jī)是美國人發(fā)明的,所以他們制定的密碼本只有字母、數(shù)字和一些符號,總共128個字符,用一個字節(jié)就可以表示了。而這就是赫赫有名的ASCII碼表。
隨著計算機(jī)的普及,越來越多的國家對ASCII碼表進(jìn)行擴(kuò)展,制定了用于表示自己語言的編碼表。
而我們國家因為漢字太多,單是常用的漢字就有6700多個,而一個字節(jié)只能表示256個字符,遠(yuǎn)遠(yuǎn)不夠。而兩個字節(jié)能表示256x256=65536個字符,所以至少要用兩個字節(jié)才能給這些常用字編上號。為了兼容ASCII碼,所以漢字干脆直接使用兩個字節(jié)表示,后來就演變成了GBK編碼表。電腦只需要判斷第一個字節(jié)是否大于127就知道是ASCII碼還是漢字了。
其他國家差不多也是這么干的,但因為沒有統(tǒng)一的標(biāo)準(zhǔn),這就導(dǎo)致同一個編號可能在不同的密碼本中表示不同的含義。
這個時候有個組織就跳出來了,它制定了一種新的編碼,幾乎包括了全世界所有國家的語言,也就是萬國碼。
只是一開始不是所有人都愿意使用萬國碼,因為對于西方的國家來說,明明只需要一個字節(jié)來表示一個字母,用萬國碼就需要兩個字節(jié),太浪費內(nèi)存了。直到萬國碼發(fā)展到第8個版本時才流行了起來,也就是utf-8編碼?!?p> 「哇哦,原來是這樣。那剛剛在小黑屏里面顯示我名字亂碼,是不是就是密碼本對不上???」
我摸著自己的下巴下意識說道。
「聰明!我們在保存文本之前,需要設(shè)定其保存編碼格式。同樣,在打開文本之前也要設(shè)置讀取文本編碼格式。只有保存和讀取的編碼一致時,電腦才能顯示出來正確的內(nèi)容。
sublime默認(rèn)使用的是utf-8編碼來打開和保存文本,而小黑屛則是GBK。
假設(shè)在utf-8中任字的編碼是1314,靈是0520,玥是1413。小黑屏在顯示這三個字符時,它將1314、0520、1413這三個編號拿到GBK編碼表里比對,結(jié)果就是你剛剛看到的那三個亂七八糟的字了?!?p> 「那要解決這個問題的關(guān)鍵就是要統(tǒng)一密碼本咯?」
「對頭?!?p> 老爹滿意的笑了笑。
「如此說來,有兩種方案可以解決這個問題,一是修改sublime保存時的密碼本,二是修改小黑屏讀取時的密碼本。
老爹你既然是在sublime中進(jìn)行的操作,想必是采用的方案一了。如果我的推理沒有錯的話,Ctrl+Alt+C就是sublime修改保存密碼本為GBK的快捷鍵!」
「厲害,厲害,不過這畫風(fēng)有點似曾相識啊!」
老爹拍手叫好,贊揚之情溢于言表。
「哼哼,你以為我?guī)装偌履习卓戳??我還做了筆記的?!?p> 得到老爹的表揚,我有些得意地說道。
「納尼?你……做筆記是幾個意思?」
「這都不知道啊,以后哪個敢欺負(fù)我,我就一筆記拍ta臉上,然后跟ta說,姐可是看過1000多集柯南的人,精通800多種殺人手法,700多種不在場證明。上一個這么對姐的人墳草都一丈高了,兇手到現(xiàn)在都沒有找到。
咦,老爹,你怎么流了這么多汗啊,是不是身體不舒服……」