如何在ASP內判定BIG5碼中文字

大多數的 asp 應用程式若是在 utf-8 模式下開發, 前面多會有這麼一行:

<%@LANGUAGE=”VBSCRIPT” CODEPAGE=”65001″%>

然而有個很麻煩的事是在處理判定 BIG5 編碼的中文字. 在正常的狀況下, 應該不會用到這樣的功能, 因為無論是 BIG5 或非 BIG5 的中文字都是可以在 UTF-8 的環境下良好並存的, 但若是和一些舊的程式或其他異質環境介接, 就會遇到這種問題, 解決的方式是利用 asp 的 codepage 來轉換內碼後判定即可. 方式如下:

Function IsBig5(strChar)

    ' check A440~C67E 常用字, C940~F9D5 次常用字

    session.codepage="950"
    Dim lngAsc
    lngAsc = Asc(strChar)
    IsBig5 = (lngAsc >= -23488 And lngAsc <= -14722)
    If Not IsBig5 Then IsBig5 = (lngAsc >= -14016 And lngAsc <= -1579)
    session.codepage="65001"
End Function

利用了 session 的 codepage 動態轉換, 將一個字用 Asc 碼判定值是否落在 BIG5 碼內, 以進行判定, sample code 如下:

strTest = "政府环境保护限期"

For i=1 to Len(strTest)
    charTemp = Mid(strTest,i,1)
    Response.Write charTemp & " IsBig5 = " & IsBig5(charTemp) & "<br>"
Next

輸出結果將會是:

政 IsBig5 = True
府 IsBig5 = True
环 IsBig5 = False
境 IsBig5 = True
保 IsBig5 = True
护 IsBig5 = False
限 IsBig5 = True
期 IsBig5 = True

請特別注意執行的 codepage 為 65001, 也就是在 UTF-8 的環境下的 asp 程式, 附件為整個 asp 的程式碼, 供各位研究看看囉!
sample.zip

 

BIG5 內碼對照表可以參考: http://ftp.isu.edu.tw/pub/Windows/Chinese/code/big5.txt

stdfont.24?
(hanstd.24)
標準字型 常用字
次常用字
倚天字
A440-C67E
C940-F9D5
F9D6-F9FE
5401
7652
41
spcfont.24
(han-gr.24)
特殊符號 標準字
控制字
可造字
A140-A3BF
A3C0-A3E0
A3E1-A3FE
408
33
30
<- 保留
<- 保留
spcfsupp.24
(han-gr1.24)
特殊字型 C6A1-C8FE 365
*318
408 max.
Han’s 24
ascfont.24
(han-asc.24)
ASCII 256

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *