手持兩把錕斤拷 口中疾呼燙燙燙 腳踏千朵屯屯屯 笑看萬物鍩鍩鍩
就用這個冷笑話來作為第一篇把,應該都通過這個冷笑話吧,也是編程中經常會遇到的問題。。。
聊聊原理吧。。
這一句在百度百科中可以查到,主要是因為在unicode編碼轉成GBK是出錯的,因為並不是所有的字都能夠用unicode表示,因此就會導致一些unicode無法比較的字默認填充一些字符,而unicode一般填充的是 \xef\xbf\xbd(UTF-8),而反復填充這些字符,就類似於這種形式:
\xef\xbf\xbd\xef\xbf\xbd,而當使用GBK進行解析的時候,按照漢字占兩個字節的規則,0xEFBF就對應“錕”, 0xBDEF對應“斤”,0xBFBD對應“拷”,所以就出現了這亂碼了。
燙燙燙 和 屯屯屯其實是一個原理,是我們在使用VC中文版的時候經常出現的問題,主要原因是我們使用了沒有賦初值的局部變量,而VC中
會對沒有賦初值的部分自動填充一些初始字符, 一般填充 0xCC,兩個連起來兩個字節對應的就是“燙”,有些填充的是0xCD,相應的就是“屯”。

鍩鍩鍩 則是網頁的亂碼,也是編碼問題,utf-8 與 GBK/gb2312
