碼,對於多字節來說就很復雜的編碼,它就是壹個代碼表,就像查字典,像我們以前的高考時填寫的區位碼,就是知道橫縱坐標後就能查到值,這就是
unicode,但 unicode
本身是多字節支持的編碼方案,由於多個字節在網絡上傳輸或保存到磁盤上是按壹個字節壹個字節來保存的,這就存在先保存字節還是低字節的問題還有壹個問題是
壹直使用字節數來編碼字符還是變長字節來編碼字節(比如為了兼容性,單字節依然是壹個字節保存,其它常見自然語言的字符用雙字節,很少見的冷僻字用多字節
編碼)這也需要讓程序知道哪個字節是分隔點(哪幾個字節湊在壹起是壹個字符),因此有多個編碼成字節的方案,比如 UTF-8, UTF-16
之類的,UTF-8 就是變長字節方案,它們都是用壹個方法來編碼 unicode code point。
至於什麽叫 UTF-8
(ASCII 編輯) 這可能妳得自己試壹下,編輯保存之後,用notepad 打開或 java FileInputStream
按字節讀取來觀察壹下它與 Unicode 編輯有什麽不同。Windows 上的 notepad 記事本本身只支持 ANSI,也就是 ASCII
編輯,就是說把內部編碼直接當成 ASCII
字節,不對字節做任何轉換編碼處理,所以當兩個漢字4個字節放在壹起,我通過程序刪除第2個字節的話,妳會發現全成了亂碼,因為程序會假設 1 + 3
湊在壹起是壹個漢字,最後壹個4單獨成壹個漢字,所以都是錯誤的。而 UTF-8
之類的有壹套編碼規則,或許能推測出這個數據本身有錯誤,當通過網絡傳輸時我們就能識別出傳輸過程中是否有錯誤發生。