Top 10 測試目標極端值

宣告的 charset 跟實際位元組不一樣

這一頁宣告 <meta charset="utf-8">,但下面標示的那個字,實際寫進檔案的位元組並不是合法的 UTF-8 序列。瀏覽器仍然會照著宣告去解碼——結果就是亂碼。

宣告不保證正確看到 U+FFFD 要起疑

對照

正確編碼的字(UTF-8)café
位元組錯誤的同一個字(宣告 UTF-8,實際是 Latin-1 位元組)caf

這一頁在測什麼

宣告是站台的說法,不是事實<meta charset> 或 HTTP header 的 charset= 都只是站台的宣告;真正決定字元的是位元組本身。這一頁的位元組跟宣告對不上。
看到替代字元就該停下來解碼出 U+FFFD(replacement character)時,正確反應是把這個欄位標成可疑(例如 charset_declared_mismatch),不是把亂碼字串當成一個新的合法值繼續比對。
雜湊會被污染同一個底層值,因為編碼判斷不同會雜湊出不同結果——比對雜湊的監控會把「編碼判斷錯誤」誤報成「內容變了」。
平台必須不做的事:直接信任宣告的 charset 解碼後就拿字串去比對或雜湊,完全不檢查解碼過程有沒有出現替代字元。