先扯一會男人胯下那兩個東西
今天,朋友找我問一個在 WebBrowser 里加載 HTML 頁面亂碼的問題,幫她處理過以后,她嘟囔了一句 “編碼什么的我完全不懂啊”……
這里的她,已經(jīng)有三年的工作經(jīng)驗,大大小小的項目也參與過幾個,可是對于這個問題,還是似懂非懂。
不只是她,其實還有好多工作多年的朋友對這個問題還不甚理解,因為工作原因,只知道出現(xiàn)亂碼以后改改配置文件,開發(fā)工具里設(shè)置一下就能解決,深層次的原因,還是不很理解,或者是沒必要理解,也不想去理解。
前段時間就有一個朋友,有點裝逼的朋友,接觸編程十來年了,工作也有七八年了,現(xiàn)在在一個在當(dāng)?shù)匦∮幸恍┟麣獾能浖救渭夹g(shù)經(jīng)理。我們合作了一個小項目,他用 Java 負(fù)責(zé)云端,我用 C# 做客戶端。我設(shè)計了一個 Lincenses 生成、校驗的算法,主要是拿硬件ID、設(shè)備編號、授權(quán)日期這些參數(shù)生成一個16位的注冊碼,使離線版的客戶端能夠被系統(tǒng)管控。為了避免輕易被猜解,我加了隨機(jī)混淆的機(jī)制。當(dāng)我把這個 Licenses 算法的 Java 版代碼給他的時候,他死活不相信是我寫的,甚至至今,提起那個項目,他還說我“網(wǎng)上找的算法”……~~~無語~~~多大個事兒啊,也就把源數(shù)據(jù)的編碼轉(zhuǎn)來轉(zhuǎn)去拼拼湊湊處理一下而已,但是,他不會~~~
也確實,大多數(shù)編碼的問題開發(fā)環(huán)境都替我們解決了,只在項目布署的時候,或者多方通信的時候,才會考慮編碼問題。所以,很多人對“編碼”這個東西并沒有多深刻的理解。
啥是編碼?
要說起“編碼”這玩意兒,事實上一直伴隨我們左右,甚至可以說是一個“最熟悉的陌生人”,比如:“郵政編碼”。
“編碼”的概念,在百科上是這樣解釋的:“編碼是信息從一種形式或格式轉(zhuǎn)換為另一種形式的過程也稱為計算機(jī)編程語言的代碼簡稱編碼。用預(yù)先規(guī)定的方法將文字、數(shù)字或其它對象編成數(shù)碼,或?qū)⑿畔?、?shù)據(jù)轉(zhuǎn)換成規(guī)定的電脈沖信號。編碼在電子計算機(jī)、電視、遙控和通訊等方面廣泛使用。編碼是信息從一種形式或格式轉(zhuǎn)換為另一種形式的過程。解碼,是編碼的逆過程?!?
簡單來講,編碼是信息從一種形式或格式轉(zhuǎn)換為另一種形式的過程。
概念比較抽象,我們還拿郵政編碼來舉例。
郵局,那個神奇的、無孔不入、無所不達(dá)又無比大爺?shù)纳衿鏅C(jī)構(gòu),他們?yōu)榱颂岣哙]件的投遞效率,為了快速的區(qū)分像 “中華人民共和國新疆維吾爾自治區(qū) 伊犁哈薩克自治州 察布查爾錫伯族自治縣 奧依亞依拉克鄉(xiāng) 奧依亞依拉克村村民委員會 古且末國歷史文化遺址 申報聯(lián)合國教育科學(xué)文化組織 世界非物質(zhì)文化遺產(chǎn)工作領(lǐng)導(dǎo)小組辦公室” 這種奇葩