複製鏈接
請複製以下鏈接發送給好友

錕斤拷

鎖定
錕斤拷,是一串經常在搜索引擎頁面和其他網站上看到的亂碼字符。亂碼源於GBK字符集Unicode字符集之間的轉換問題
中文名
錕斤拷
所屬學科
計算機
屬    性
亂碼字符
原    因
字符集之間的轉換錯誤
出現領域
互聯網

錕斤拷原因

Unicode是一直在更新的,在這個過程中,肯定有一些比較新的字符他是無法表示的。或者即使Unicode發佈了新版納入了某個文字,但是很多軟件系統並未升級也會有這樣的問題。
就像生活中一些手機廠商新出的那些emoji表情,在自己的手機上可以正常顯示,發到其他品牌的手機上可能就無法顯示。這其實也是字符集不支持導致的。
發生以上情況時,無法顯示的時候也需要有一個字符來表示的,在Unicode中,這個字符就是 ,他也是Unicode中定義的一個特殊字符。也就是"0xFFFD REPLACEMENT CHARACTER",所有無法表示的字符都會通過這個字符來表示。 [1] 
錕斤拷
錕斤拷(2張)
我們上網的時候不用去關心網站採用了什麼編碼格式,但是頁面中不時出現的亂碼還是會讓我們頭疼。在這點上,Firefox的用户更是深有體會,用Firefox瀏覽網頁看到亂碼的機會要比Internet Explorer多得多。 亂碼主要與字符編碼系統有關。例如一個網頁中常出現的亂碼“錕斤拷”,它就是新老編碼系統轉換中出現的。 [2] 
Visual Studio中的Debug模式下,如果聲明一個變量,但是沒有初始化,微軟會給未初始化的內存賦值為0xCC。給未初始化的內存賦0xCC是有原因的,0xCC其實是INT3中斷指令,所以如果在Debug模式下試圖去執行這塊未初始化的內存的話就會中斷程序。
但VS中調試器默認的字符集是MBCS,而在MBCS中0xCCCC正好就是中文中的“燙”,所以顯示出來就都是燙。
如果是用分配堆的內存,會初始化成0xCD,0xCDCD在MBCS字符集中就是屯。
錕斤拷 錕斤拷 [2]
錕斤拷則涉及unicode的字符集轉換問題,Unicode和老編碼體系的轉化過程中,肯定有一些字,用Unicode是沒法表示的,Unicode官方用了一個佔位符來表示這些文字,這就是:U+FFFD REPLACEMENT CHARACTER。U+FFFD的UTF-8編碼是0xEFBFBD,如果重複多次形成:EFBFBDEFBFBDEFBFBD 。
GBK/CP936/GB2312/GB18030的環境中顯示的話,一個漢字2個字節,最終的結果就是:錕斤拷——錕(0xEFBF),斤(0xBDEF),拷(0xBFBD)。 [3] 
Python3代碼:
print((u'\uFFFD'.encode('utf-8')*2).decode('gbk'))
輸出結果:“錕斤拷”。

錕斤拷示例

“錕屆瀿錕斤拷雮傡錕斤拷直錕斤拷錕”、“錕斤拷錕斤拷之錕斤拷錕窖э拷錕 ”……
上面這些字句是毫無實際意義的,但它們卻形象地表達出了一些莫名其妙的問題。這是一個很經典的亂碼,最容易出現的地方就是搜索引擎。
例如這個招聘就非常經典: [2] 
所屬行業:線纜
單位規模:100 - 499人
註冊資金:1299萬
聯繫人:錕斤拷錕斤拷
聯繫人職位:錕斤拷錕斤拷
傳真:xxx-xxxxxxxx
電子信箱:xxxx_xxx@xxxxxx.xxx
通信地址:
郵編:
單位網址:
單位介紹:台錕斤拷錕斤拷業錕斤拷台錕斤拷錕斤拷錕僥碉拷f錕斤拷錕斤拷錕斤拷錕?錕斤拷錕斤拷/錕斤拷錕斤拷
招聘職位:錕斤拷錕斤拷
人數:20人
發佈日期:2007-07-17
聯繫人:錕斤拷錕斤拷

錕斤拷其他經典亂碼

除了錕斤拷以外,還有兩組比較經典的亂碼,分別是"燙燙燙"和"屯屯屯",這兩個亂碼產生自VC,這是debug模式下VC對內存的初始化操作。VC會把棧中新分配的內存初始化為0xcc,而把堆中新分配的內存初始化為0xcd。把0xcc和0xcd按照字符打印出來,就是燙和屯了。 [1] 
參考資料