普考-資訊處理計算機概要112 年第 20 題單選題
有關UTF-8、UTF-16、UTF-32的比較,下列何者錯誤?
A最長編碼長度均為32位元
B三者中只有UTF-32採取固定寬度編碼
CJAVA的原生字元編碼採用UTF-8正確答案
D三者中僅UTF-8反向相容於ASCII編碼
C正確答案
Java 的原生字元 (char) 採用 UTF-16,非 UTF-8,故 C 錯誤。
為什麼答案是 C
Java 的原生字元型別 char 佔 2 bytes,內部採用 UTF-16 編碼而非 UTF-8。這是常見誤解,Java 檔案讀寫可用 UTF-8,但 char 本身是 UTF-16。
載入中…
完整詳解
Pro · 無限重點 Java 的原生字元 (char) 採用 UTF-16,非 UTF-8,故 C 錯誤。
記:Java char = 2 bytes = UTF-16;UTF-8 才相容 ASCII。
逐選項分析
A✕
UTF-8 最長 4 bytes (32 bits),UTF-16 最長 4 bytes (代理對),UTF-32 固定 4 bytes,三者最長編碼均為 32 位元,敘述正確。
B✕
UTF-8 為 1-4 bytes 變長、UTF-16 為 2 或 4 bytes 變長、UTF-32 固定 4 bytes,只有 UTF-32 是固定寬度,敘述正確。
C✓ 正確
Java 的原生字元型別 char 佔 2 bytes,內部採用 UTF-16 編碼而非 UTF-8。這是常見誤解,Java 檔案讀寫可用 UTF-8,但 char 本身是 UTF-16。
D✕
UTF-8 對 U+0000~U+007F 使用單一 byte 且與 ASCII 完全相同,故反向相容 ASCII;UTF-16、UTF-32 最小單位均大於 1 byte,無法相容 ASCII,敘述正確。
UTF 編碼比較
| 編碼 | 寬度 | 最長 | ASCII 相容 |
|---|
| UTF-8 | 變長 1-4 bytes | 32 bits | ✅ 是 |
| UTF-16 | 變長 2 或 4 bytes | 32 bits | ❌ 否 |
| UTF-32 | 固定 4 bytes | 32 bits | ❌ 否 |
C 選項故意把 Java 的「原生字元編碼」說成 UTF-8。雖然 Java 在檔案處理、網路傳輸常使用 UTF-8,但 JVM 內部 char 型別明確採用 UTF-16,這是 Java 語言規範 (JLS) 的規定。考生容易因「現代開發常用 UTF-8」而誤選。