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

製作 GBK 與 Unicode 對照表:Java 程式碼實作

     編輯:Java 相關知識

問題背景

專案遇到 Unicode 轉 GBK 失敗,罕用字變為 ??。需建立完整對照表輔助排查與轉碼。

實作原理

  1. 遍歷 GBK 編碼表所有漢字區段(區位碼整齊,易迭代)。
  2. 以 GBK 位元組建構 String,再用 getBytes("Unicode") 取得 Unicode 位元組。
  3. Java 內部以 Unicode 表示字元,故轉換可靠。

核心代碼:遍歷 GBK/2 區

int count = 0; for (int seg = 0xB0; seg <= 0xF7; seg++) { for (int ch = 0xA1; ch <= 0xFE; ch++) { byte[] gbkBytes = new byte[] {(byte)seg, (byte)ch}; String str = new String(gbkBytes, "GBK"); byte[] unicodeBytes = str.getBytes("Unicode"); // 長度 4 if (unicodeBytes.length == 4) { count++; StringBuffer buf = new StringBuffer(); for (byte b : gbkBytes) buf.append((b & 0xFF) + " "); // Unicode 位元組為 Little Endian,倒序讀取 for (int i = 3; i > 1; i--) buf.append((unicodeBytes[i] & 0xFF) + " "); buf.append("\n"); osw.write(buf.toString()); } } }

說明:

  • GBK/2 區首位元組 0xB0–0xF7,尾位元組 0xA1–0xFE。
  • getBytes("Unicode") 回傳 4 位元組:前兩個為 BOM/結構資訊,後兩個為實際碼點,且為 Little Endian 順序(低位在前)。
  • 輸出格式:GB高位 GB低位 Unicode低位 Unicode高位。

使用對照表

讀入檔案,以 GB 碼為索引建立陣列/Map,即可快速查詢 Unicode 碼點,輔助轉碼邏輯驗證與除錯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved