記事本的乙個bug

2021-06-28 23:05:58 字數 827 閱讀 3084

bug演示:

記事本新建乙個文字,開啟以後輸入: 聯通 這兩個字, 儲存 ,關閉記事本。

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

我分析了一下原因,

記事本儲存的時候,預設使用ansi編碼

但是用ansi編碼呢,聯通這兩個字的開頭正好是:fffe..... 這樣的,於是再開啟呢,他就以為是utf-8編碼了,但是按照utf-8來解碼呢,卻造成亂碼了。

以下是「聯通」二字在不同編碼下的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一樣的效果

記事本的乙個BUG

我們常用的小工具,系統中附件裡的 記事本 工具,有個比較有意思的bug,讓我們按以下步驟來看看。1.在開始選單的附件裡開啟記事本 2.複製引號中的內容,貼上到記事本裡 aaaa bbb ccc ddddd 3.把它儲存到桌面上,檔名任意,然後關閉記事本程式 4.在桌面上開啟剛才儲存的檔案 現在看到的...

QT寫乙個記事本

qt寫乙個記事本 新增 編輯 一欄裡 時間日期 及 格式 一欄裡 字型 顏色 的功能 1.在mainwindow.h裡新增字型顏色時間等需要的標頭檔案 include include include include include 如圖 2.分別建立設定字型 設定顏色 獲得系統時間的槽 void s...

推薦乙個記事本程式 替代windows記事本)

這個程式的名字叫 notepad2 替換c windows 目錄下 c windows system32 目錄下 的notepad就可以了。注意 替換需要對目錄下的notepad.exe檔案進行 獲得管理員所有許可權 才可以正確的替換。滑鼠右鍵獲得管理員所有許可權的登錄檔查閱 下面截幾張圖分別是sq...