windows記事本bug的解釋

來源:互聯網
上載者:User
我對windows記事本bug的解釋

這個bug在windowsXP sp1,sp2中都用,其他版本的windows是否有我沒試過,不過我估計windows2000和2003都會存在。

bug示範:
記事本建立一個文本,開啟以後輸入: 聯通 這兩個字, 儲存 ,關閉記事本。

再開啟,你看看變成什麼了?

有一個開玩笑的說法是因為中國聯通把微軟中國得罪了……

其實我看就是微軟中國那幫傢伙水平不行,對多語言編碼弄得不好造成的

我分析了一下原因,
記事本儲存的時候,預設使用ansi編碼
但是用ansi編碼呢,聯通這兩個字的開頭正好是:fffe..... 這樣的,於是再開啟呢,他就以為是utf-8編碼了,但是按照utf-8來解碼呢,卻造成亂碼了。

我解釋完畢,你滿意否?

之所以我會想起來解釋這個bug,是由於最近開發一個軟體涉及到一些編碼方面的問題,微軟windows這個bug弄得我的軟體產生的檔案到現在還無法正常移植到其他平台上。

呵呵

shinzeal 2005-1-29 04:53 PM
我再具體進行分析一下:
以下是“聯通”二字在不同編碼下的16進位代碼:

FF FE 54 80 1A 90 (Unicode)
FE FF 80 54 90 1A (Big Unicode)
FF FE 54 80 1A 90 (UTF-8)
FF FE 6A 00 68 03 (ANSI)

可以看出來,Unicode和UTF-8編碼下,聯通二字的編碼是一樣的,而Big Unicode是和Little Unicode(簡稱Unicode)正好相反的編碼方式,一般Intel體系的電腦用Little Unicode編碼效率較高。而檔案頭FF FE和FE FF則被微軟用來作為區分檔案是Little Unicode還是Big Unicode的標誌。同時呢,由於UTF-8也是緣於Unicode編碼方式的,微軟就在UTF-8編碼的檔案前面也加上了FF FE用來作為標誌。

可是這樣一來,用ANSI編碼儲存的檔案就出問題了,因為聯通二字的ANSI編碼正好是以FFFE開頭的,這樣以ANSI編碼儲存以後再次開啟,記事本首先檢測到FFFE,就認為是UTF-8編碼了,於是按照UTF-8編碼開啟以後就會顯示為亂碼。

利用這個原理,大家可以試試,找到以ANSI編碼儲存時開頭為FFFE的其他文字,同樣可以實現和 聯通二字在記事本中造成的bug一樣的效果

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.