亂碼的形成機理
【這是你想要的補丁】經多人反應這篇專業性較強,希望將這篇刪去。但是我覺得這篇應該是唯一一篇真正的零基礎,因為至少沒有十六進位啊!
亂碼是怎麼回事呢?百度百科說,亂碼有四種:文本亂碼,文檔亂碼,文件亂碼,網頁亂碼。這什麼亂七八糟的,等我哪天有了時間就改百科去。
按我的分類,亂碼應該是這樣的:【圖片】
【前方高能,建議點開放大服用】
我們見到的和迫切需要破解的亂碼幾乎都是有含義亂碼。半含義亂碼和無含義亂碼我就不管了。有含義亂碼都是可以解出來的。下面我們著重介紹這種亂碼。字符集有單位元組字符集,雙位元組字符集、變長字符集等(「變」是動詞,意為「可變的」)。我們已經說過,文本在計算機中存的是編碼。也就是:
文本—(編碼)→二進位—(同種方式解碼)→文本
如果編碼和解碼所用字符集一致,讀取起始點正確,則得到正確文本。否則得到亂碼。
亂碼形成的機理則是這樣的:
文本—(一種方式編碼)→二進位—(另一種方式解碼)→亂碼
破解亂碼所採用的方式與編碼方式相反:我們先需要根據亂碼的特徵猜出導致亂碼的程序用的是何種編碼方式解的碼,然後用這種方式編回二進位,再判斷出這是用何種編碼方式編出的二進位,用這種方式解碼,即可得到正確文本。
(看不懂字還看不懂顏色嗎,總之反過來就對了)
有看懂了的大佬會說,這樣豈不是很費力。如果有n種編碼方式,那麼把產生亂碼的兩種編碼方式猜對,概率只有n方分之一啊(事實上是C(n,2)分之一)
我會這樣回答:是的。所以最好的方式就是:不要產生亂碼!!!我也很期待有一天全世界都只用UTF8一種編碼啊!!!不過那跟期待共產主義實現或者說期待沒有國家國別有什麼不同呢?全世界都用英語不是更方便嗎?!所以如果亂了,就慢慢解唄!
END
圖文編輯 | 薊珂
簡單的生活
亂碼的世界
據說程設考4.0的人都已經關注我了哦~
—某錕斤拷的錕斤拷—
TAG:某錕斤拷的錕斤拷 |