GB2312 編碼範圍涵蓋 6,763 個漢字,分為兩級:一級常用字 (3,755 個)、二級次常用字 (3,008 個)。本文提供一段精簡 PHP 程式碼,遍歷所有區位碼並寫入檔案,可用於字庫生成、編碼測試、字型子集化等場景。
<?php
$fp = fopen('gb2312_all.txt', 'w');
// 區碼範圍:0xB0-0xF7 (16-87 區)
for ($area = 0xB0; $area <= 0xF7; $area++) {
// 位碼範圍:0xA1-0xFE (1-94 位)
for ($pos = 0xA1; $pos <= 0xFE; $pos++) {
// pack('CC') 將兩個位元組寫入二進位檔案
fwrite($fp, pack('CC', $area, $pos));
}
}
fclose($fp);
?>
$chars = [];
for ($area = 0xB0; $area <= 0xF7; $area++) {
for ($pos = 0xA1; $pos <= 0xFE; $pos++) {
$gb = pack('CC', $area, $pos);
$utf8 = iconv('GB2312', 'UTF-8//IGNORE', $gb);
if (strlen($utf8) === 3) { // 過濾未定義碼位
$chars[] = $utf8;
}
}
}
file_put_contents('gb2312_utf8.json', json_encode($chars, JSON_UNESCAPED_UNICODE));
iconv 轉換時加 //IGNORE 忽略無法轉換的碼位 (如 0xD7FA 等 GB2312 未定義區)。