.本文 敬啟者: 首先感謝您採用行政院研考會提供的兩岸中文內碼轉碼表及常用資訊名詞對照表,底下 特別介紹如何使用這些轉碼表。 .本文2 專案承辦單位:中華民國電腦技能基金會 ==================================== .本文1 檔案一 ------------------------------------------------------------------------- 以 GB 12345-1990 碼序為基礎的 GB 12345 對 CNS 11643 轉碼對照表 檔案名稱:GBTOCNS.REL 資料筆數:94*94=8836 資料排序:以 GB 12345-1990 碼序為準,從 HEX(A1A1) 開始,至 HEX(FEFE)止, 共 8836 筆 碼的表示:CNS 建議內碼(2 BYTE 表示法,第一字面從 HEX(A1A1) 至 HEX(FEFE), 第二字面從 HEX(A121) 至 HEX(FE7E)。 資料結構:每筆 13 BYTES,即個數 + CNS 碼(六組) │1 Bytes│2 Bytes│2 Bytes│2 Bytes│2 Bytes│2 Bytes│2 Bytes│ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 對 第 第 第 第 第 第 應 一 二 三 四 五 六 的 個 個 個 個 個 個 數 對 對 對 對 對 對 目 應 應 應 應 應 應 │ 碼 碼 碼 碼 碼 碼 │ └CHR$(0):表沒有對應 CHR$(1):表對應碼有一個 CHR$(2):表對應碼有兩個,依此類推。 附 註:CNS 11643 對應不到的,以 2 個 SPACE CODE(HEX(20)) 代替。 個數表示為 HEX(00) 至 HEX(06) 範 例:查詢〞大”這個簡體字所對應的CNS 碼 DECLARE SUB GetGbRec (gbchr$) COMMON SHARED gbrec% OPEN "gbtocns.rel" FOR RANDOM AS #1 LEN = 13 FIELD #1, 13 AS gc$ Gb$="大" CALL GetGbRec(Gb$) '讀取”大”這個簡體字的碼序 GET #1, gbrec% '依碼序讀取檔案內的記錄 MapNum$=LEFT$(gc$,1) 'Check對應的CNS碼有幾個 Cns1$ = MID$(gc$, 2, 2) '第一個對應的Cns 碼 Cns2$ = MID$(gc$, 4, 2) '第二個對應的Cns 碼 ﹕ ﹕ Cns6$ = MID$(gc$, 12, 2) '第六個對應的Cns 碼 CLOSE #1 END SUB GetGbRec (gbchr$) STATIC first% = ASC(LEFT$(gbchr$, 1)) - 161 'Get First Byte of GB second% = ASC(RIGHT$(gbchr$, 1)) - 161 'Get Second Byte of GB gbrec% = first% * 94 + second% + 1 END SUB 檔案二 ------------------------------------------------------------------------- 以 CNS 11643 碼序為基礎的 CNS 11643 對 GB 12345 轉碼對照表 檔案名稱:CNSTOGB.REL 資料筆數:94*94*2=17672 資料排序:CNS 11643 碼序為準,第一、二字面各 8836 筆 碼的表示:GB 12345 內碼以 2 BYTE 表示,從HEX(A1A1) 至 HEX(FEFE)。 資料結構:每筆 2 BYTES,內存 GB 2312 內碼。 │2 Bytes│ ↑ 對 應 的 G B 碼 附   註:GB 12345 對應不到的,以 2 個 NULL CODE(HEX(00)) 代替 範 例:查詢〞大”這個繁體字所對應的GB碼 DECLARE SUB GetCnsRec (Cnschr$) COMMON SHARED cnsrec% OPEN "cnstogb.rel" FOR RANDOM AS #1 LEN = 2 FIELD #1, 2 AS cg$ Cns$="大" CALL GetCnsRec(Cns$) '讀取”大”這個繁體字的碼序 GET #1, cnsrec% '依碼序讀取檔案內的記錄 Gb$ = cg$ '檔案內的資料即為對應的GB碼 CLOSE #1 END SUB GetCnsRec (cnschr$) STATIC first% = ASC(LEFT$(cnschr$, 1)) - 161 IF ASC(RIGHT$(cnschr$, 1)) >= 161 THEN second% = ASC(RIGHT$(cnschr$, 1)) - 161 'Get First Byte of CNS cnsrec% = first% * 94 + second% + 1 'First Page of CNS ELSE second% = ASC(RIGHT$(cnschr$, 1)) - 33 'Get Second Byte of CNS cnsrec% = first% * 94 + second% + 1 + 8836 'Second Page of CNS END IF END SUB 檔案三 ------------------------------------------------------------------------- 以 GB 12345 碼序為基礎的 GB 對 ISO 10646 UCS-2 轉碼對照表 檔案名稱:GB01UCS.REL 資料筆數:94*94=8836 資料排序:以 GB 12345-1990 碼序為準,從 HEX(A1A1) 開始,至 HEX(FEFE) 止,共 8836 筆 碼的表示:UCS-2(4E00--9FAA,以 2 BYTES HEX(4E),HEX(00) 方式表示) 資料結構:每筆 2 BYTES │2 Bytes│ ↑ 對 應 的 UCS-2碼 附 註:UCS-2 對應不到的,以 2 個 NULL CODE(HEX(00)) 代替 範 例:查詢〞大”這個簡體字所對應的UCS-2碼 DECLARE SUB GetGbRec (gbchr$) COMMON SHARED gbrec% OPEN "gb01ucs.rel" FOR RANDOM AS #1 LEN = 2 FIELD #1, 2 AS gu$ Gb$="大" CALL GetGbRec(Gb$) '讀取”大”這個簡體字的碼序 GET #1, gbrec% '依碼序讀取檔案內的記錄 GbUcs$ = gu$ '對應的UCS-2碼 CLOSE #1 END SUB GetGbRec (gbchr$) STATIC first% = ASC(LEFT$(gbchr$, 1)) - 161 'Get First Byte of GB second% = ASC(RIGHT$(gbchr$, 1)) - 161 'Get Second Byte of GB gbrec% = first% * 94 + second% + 1 END SUB 檔案四 ------------------------------------------------------------------------- 以 CNS 11643 碼序為基礎的 CNS 11643 對 ISO 10646 UCS-2 轉碼對照表 檔案名稱:CNSTOUCS.REL 資料筆數:94*94*2=8836*2=17672 資料排序:CNS 11643 碼序為準,第一、二字面各 8836 筆 碼的表示:UCS-2(4E00--9FAA,以 2 BYTES HEX(4E),HEX(00) 方式表示) 資料結構:每筆 2 BYTES │2 Bytes│ ↑ 對 應 的 UCS-2 碼 附 註:UCS-2 對應不到的,以 2 個 NULL CODE(HEX(00)) 代替 範 例:查詢〞大”這個繁體字所對應的UCS-2碼 DECLARE SUB GetCnsRec (Cnschr$) COMMON SHARED cnsrec% OPEN "cnstoucs.rel" FOR RANDOM AS #1 LEN = 2 FIELD #1, 2 AS cu$ Cns$="大" CALL GetCnsRec(Cns$) '讀取”大”這個繁體字的碼序 GET #1, cnsrec% '依碼序讀取檔案內的記錄 Gb$ = cu$ '檔案內的資料即為對應的UCS_2碼 CLOSE #1 END SUB GetCnsRec (cnschr$) STATIC first% = ASC(LEFT$(cnschr$, 1)) - 161 IF ASC(RIGHT$(cnschr$, 1)) >= 161 THEN second% = ASC(RIGHT$(cnschr$, 1)) - 161 'Get First Byte of CNS cnsrec% = first% * 94 + second% + 1 'First Page of CNS ELSE second% = ASC(RIGHT$(cnschr$, 1)) - 33 'Get Second Byte of CNS cnsrec% = first% * 94 + second% + 1 + 8836 'Second Page of CNS END IF END SUB 檔案五 ------------------------------------------------------------------------- 以GB 12345碼序為基礎的GB對CNS 11643(對應值為ISO 10646 UCS-2碼) 轉碼對照表 檔案名稱:GBUCSCNS.REL 資料筆數:94*94=8836 資料排序:以 GB 12345-1990 碼序為準,從 HEX(A1A1) 開始,至 HEX(FEFE)止, 共 8836 筆 碼的表示:CNS 11643 對應於 UCS-2 內碼(2 BYTE 表示法, 從 HEX(4E00) 至 HEX(9FA5)) 資料結構:每筆 13 BYTES,即個數 + CNS 碼(六組) │1 Bytes│2 Bytes│2 Bytes│2 Bytes│2 Bytes│2 Bytes│2 Bytes│ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 對 第 第 第 第 第 第 應 一 二 三 四 五 六 的 個 個 個 個 個 個 數 對 對 對 對 對 對 目 應 應 應 應 應 應 │ 碼 碼 碼 碼 碼 碼 │ └CHR$(0):表沒有對應 CHR$(1):表對應碼有一個 CHR$(2):表對應碼有兩個,依此類推。 附 註:CNS 11643 對應不到的,以 2 個 SPACE CODE(HEX(20)) 代替。 個數表示為 HEX(00) 至 HEX(06) 範 例:查詢〞大”這個簡體字對應UCS上的CNS 碼 DECLARE SUB GetGbRec (gbchr$) COMMON SHARED gbrec% OPEN "gbucscns.rel" FOR RANDOM AS #1 LEN = 13 FIELD #1, 13 AS guc$ Gb$="大" CALL GetGbRec(Gb$) '讀取”大”這個簡體字的碼序 GET #1, gbrec% '依碼序讀取檔案內的記錄 MapNum$ = LEFT$(guc$,1) 'Check對應的CNS碼有幾個 UcsCns1$ = MID$(guc$, 2, 2) '第一個對應Cns之UCS-2碼 UcsCns2$ = MID$(guc$, 4, 2) '第二個對應Cns之UCS-2碼 ﹕ ﹕ UcsCns6$ = MID$(guc$, 12, 2) '第六個對應Cns之UCS-2碼 CLOSE #1 END SUB GetGbRec (gbchr$) STATIC first% = ASC(LEFT$(gbchr$, 1)) - 161 'Get First Byte of GB second% = ASC(RIGHT$(gbchr$, 1)) - 161 'Get Second Byte of GB gbrec% = first% * 94 + second% + 1 END SUB 檔案六 ------------------------------------------------------------------------- 以 CNS 11643 碼序為基礎的 CNS 11643 對 GB 12345(對應值為 ISO 10646 UCS-2) 轉碼對照表 檔案名稱:CNSUCSGB.REL 資料筆數:94*94*2=17672 資料排序:CNS 11643 碼序為準,第一、二字面各 8836 筆 碼的表示: GB 12345 對應於 UCS-2 內碼(2 BYTE 表示法,從 HEX(4E00) 至 HEX(9FA5)) 資料結構:每筆 2 BYTES,內存 UCS-2 內碼。 │2 Bytes│ ↑ 對 應 的 UCS-2 碼 附 註:GB 12345 對應不到的,以 2 個 NULL CODE(HEX(00)) 代替 範 例:查詢〞大”這個繁體字所對應GB的UCS-2碼 DECLARE SUB GetCnsRec (Cnschr$) COMMON SHARED cnsrec% OPEN "cnsucsgb.rel" FOR RANDOM AS #1 LEN = 2 FIELD #1, 2 AS cug$ Cns$="大" CALL GetCnsRec(Cns$) '讀取”大”這個繁體字的碼序 GET #1, cnsrec% '依碼序讀取檔案內的記錄 Gb$ = cug$ '檔案內的資料即為對應的GB之UCS_2碼 CLOSE #1 END SUB GetCnsRec (cnschr$) STATIC first% = ASC(LEFT$(cnschr$, 1)) - 161 IF ASC(RIGHT$(cnschr$, 1)) >= 161 THEN second% = ASC(RIGHT$(cnschr$, 1)) - 161 'Get First Byte of CNS cnsrec% = first% * 94 + second% + 1 'First Page of CNS ELSE second% = ASC(RIGHT$(cnschr$, 1)) - 33 'Get Second Byte of CNS cnsrec% = first% * 94 + second% + 1 + 8836 'Second Page of CNS END IF END SUB 檔案七 ------------------------------------------------------------------------- 以英文名稱對照CNS 和GB的常用資訊名詞 檔案名稱:CONVERT.DBF 資料筆數:94*94*2=17672 資料結構: FIELDNAME FIELDTYPE FIELDLEN ============================ CNS CHAR 34 <---國內資訊名詞 CNSCODE CHAR 3 <---國內資訊名詞出處 GB CHAR 30 <---大陸資訊名詞 GBCODE CHAR 3 <---大陸資訊名詞出處 ENG CHAR 78 <---英文名稱 ============================