Java 內部使用 UTF-16,但輸入/輸出邊界(瀏覽器、數據庫、文件、JSP 編譯、操作系統)均依賴環境默認編碼。跨平台導致編碼不一致,產生亂碼。
全鏈路強制 UTF-8:開發、編譯、運行、數據庫、前端、中間件全部指定 UTF-8,不依賴任何環境默認值。
CharacterEncodingFilter,request.setCharacterEncoding("UTF-8"),映射 /*。<%@ page pageEncoding="UTF-8" %> 及 HTML meta <meta charset="UTF-8">。response.setContentType("text/html;charset=UTF-8") 或 Filter 統一設置。useUnicode=true&characterEncoding=UTF-8(MySQL),其他庫類似。StandardCharsets.UTF_8。server.xml <Connector URIEncoding="UTF-8"/>。ISO-8859-1 或 GBK 作為統一編碼,會綁定特定平台。