Class Encoding
java.lang.Object
tools.Encoding
集中管理字元集,移除對 JVM 預設字元集 (file.encoding) 的隱性依賴。
背景:本伺服器長期執行於 zh-TW Windows,JDK 8 實測預設 file.encoding = MS950
(Big5 的微軟超集)。所有「未明確指定字元集」的呼叫 — 例如單參數 new String(byte[])、
無參數 String.getBytes()、未帶 Charset 的 InputStreamReader /
OutputStreamWriter 等 — 目前都隱性解析為 MS950。
自 Java 18 起 (JEP 400) 預設字元集固定為 UTF-8,上述呼叫在新版 JDK 會改用 UTF-8,
導致設定檔、log、檔案 I/O 的中文全部變亂碼。為了在升級 JDK 後維持「與現在完全相同」
的行為,所有原本依賴平台預設的呼叫,改為明確指定 DEFAULT。
注意:與 149.2 用戶端往來的封包字串編碼,程式碼中已另外明確使用 "Big5"
(見 MaplePacketLittleEndianWriter / LittleEndianAccessor / HexTool),
不屬於本類別管轄,也不受 JEP 400 影響,維持原樣。
-
Field Summary
Fields -
Method Summary
-
Field Details
-
DEFAULT
被「凍結」的歷史平台預設字元集 = MS950。凡是過去依賴 JVM 預設 (file.encoding) 的檔案 / log / 一般字串位元組轉換, 一律改用此常數,使其行為不隨 JDK 版本 (JEP 400) 改變。日後若要全面改用 UTF-8, 只需調整此處並一併轉檔。
-