這一頁宣告 <meta charset="utf-8">,但下面標示的那個字,實際寫進檔案的位元組並不是合法的 UTF-8 序列。瀏覽器仍然會照著宣告去解碼——結果就是亂碼。
| 正確編碼的字(UTF-8) | café |
|---|---|
| 位元組錯誤的同一個字(宣告 UTF-8,實際是 Latin-1 位元組) | caf |
| 宣告是站台的說法,不是事實 | <meta charset> 或 HTTP header 的 charset= 都只是站台的宣告;真正決定字元的是位元組本身。這一頁的位元組跟宣告對不上。 |
|---|---|
| 看到替代字元就該停下來 | 解碼出 U+FFFD(replacement character)時,正確反應是把這個欄位標成可疑(例如 charset_declared_mismatch),不是把亂碼字串當成一個新的合法值繼續比對。 |
| 雜湊會被污染 | 同一個底層值,因為編碼判斷不同會雜湊出不同結果——比對雜湊的監控會把「編碼判斷錯誤」誤報成「內容變了」。 |