首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

深度解析 JSP/Servlet 中文處理與編碼陷阱

     編輯:關於JSP

中文編碼體系

  • GB2312-80:國家強制標準,雙位元組,高/低位 0xA1-0xFE,漢字範圍 0xB0A1-0xF7FE。
  • GBK:擴展規範,相容 GB2312,收錄 20902 字,範圍 0x8140-0xFEFE,可一一映射 Unicode 2.0。
  • GB18030-2000 (GBK2K):未來標準,含少數民族字,不定長(雙/四位元組),雙位元組部份相容 GBK。

JDK 內建編碼別名

標準名常見別名
GB2312gb2312, EUC_CN, Cp1381, ISO2022CN...
GBKMS936 (大小寫敏感)
UTF-8UTF8
ISO-8859-1latin1, 8859_1...

為什麼會出現「?」

跨編碼轉換必經 Unicode 中介:來源編碼 → Unicode → 目標編碼。

  • 來源字元在 Unicode 無對應 → 產生 \uFFFD (替換字元)。
  • Unicode 字元在目標編碼無對應 → 產生 0x3F (「?」)。

例:new String(buf, "GB2312") 遇 GBK 專有字 → 「?啊」;String.getBytes("GBK") 遇無對應字 → 部分「?」部分亂碼。

最佳實務

  1. 全鏈路統一編碼(建議 UTF-8):JSP pageEncoding、web.xml request-character-encoding、資料庫連線 characterEncoding、HTML <meta charset="UTF-8">。
  2. 避免在 ISO-8859-1 與中文編碼間直接轉換,務必經 Unicode。
  3. Tomcat 8+ 預設 UTF-8,舊版需在 server.xml 設定 URIEncoding="UTF-8"。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved