作者:周鵬飛(莫高軟件工作室)
開放原始碼、自由軟體,安裝後出現在元件面板「莫高軟件」頁。
| 類別 | 編碼/解碼 | 說明 |
|---|---|---|
| 中文內碼互轉 | GB ⟷ Big5 | 查表法,資源內建對照表 |
| HZ 編碼/解碼 | RFC 1843 標準,~{ ~} 包裹 | |
| 郵件/傳輸編碼 | Quoted-Printable (QP) | RFC 2045,=XX 格式 |
| Base64 | RFC 2045/4648,3→4 字元 | |
| UUencode | Unix-to-Unix,行首長度字元 | |
| XXencode | UU 改良,字元集 +-0-9A-Za-z | |
| 檔案/文字雙向 | 支援字串與檔案流 |
gbbig.cpp,Package 選既有 dclusr40.bpk 或新建 gb.bpk將 gbbig.h / gbbig.res / gbbig.dcr 複製至專案目錄,像原生元件一樣拖放使用。
// 設定輸入文字
void __fastcall Input(AnsiString Text); // 或 InputText(char*)
// 選擇編碼模式 (Code 屬性 0~11)
property int Code; // 0:GB→Big5, 1:Big5→GB, 2:EncHZ, 3:DecHZ,
// 4:EncQP, 5:DecQP, 6:EncBase64, 7:DecBase64,
// 8:EncUUE, 9:DecUUE, 10:EncXXE, 11:DecXXE
// 執行轉換
void __fastcall Encode();
// 取得結果
property AnsiString Output;
// GB→Big5
xx = (gx-161)*190; yy = (gy-161)*2;
bx = Table[xx+yy]; by = Table[xx+yy+1];
// Big5→GB
xx = (bx-161)*316;
yy = (by<=126) ? (by-64)*2 : (by-98)*2;
gx = Table[xx+yy]; gy = Table[xx+yy+1];
void Base64(BYTE in[3], BYTE out[4]) {
out[0] = in[0] >> 2;
out[1] = ((in[0] & 0x03) << 4) | (in[1] >> 4);
out[2] = ((in[1] & 0x0F) << 2) | (in[2] >> 6);
out[3] = in[2] & 0x3F;
// 映射表:A-Z a-z 0-9 + /
}
` !"#$%&'()*+,-./0-9:;<=>?@A-Z[\]^_ (32~96),行首碼 = 長度+32+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,行首碼 = 查表(長度)GB_BIG5 / BIG5_GB 資源。std::base64 (提案中)。這個 2000 年誕生的元件,以單一檔案封裝七大編碼演算法,見證了中文軟體從內碼亂碼走向 Unicode 統一的歷程。雖然今日已較少直接使用,但其查表法、位操作、資源內建、Variant 陣列操作等技術細節,仍是 C++Builder 開發者寶貴的學習素材。