请问如何判断一个字符是繁体而不是简体 |
答題得分者是:歸木淡
|
newyanglei
一般會員 發表:11 回覆:3 積分:2 註冊:2005-06-14 發送簡訊給我 |
|
wyndog
資深會員 發表:7 回覆:362 積分:348 註冊:2004-10-12 發送簡訊給我 |
是指判斷是不是 BIG5 編碼嗎?
若是如此的話,目前是沒有很有效的方法來判斷
通常是利用編碼的範圍來判斷
因為 BIG5 的第二個 byte 範圍是 40-7E, A1-FE
而 GB2312 只用到 A1-FE,所以當發現第二 byte 是位於 40-7E 間時
就可以判斷其為 BIG5 了
不過,這個辦法在 GB18030 底下就破工了... 還有一個比較麻煩的方法,就是用 MultiByteToWideChar
把它轉成 Unicode,再設定字碼為 BIG5(CP950),看能不能轉過去 以上二個方法,僅供參考,沒試過
|
歸木淡
中階會員 發表:1 回覆:49 積分:75 註冊:2005-09-07 發送簡訊給我 |
const
AllowWindowsExtension=true; //Windows big5比標準big5多七個字和一些符
Min_SecondChar1 = #$40; Max_SecondChar1 = #$7E;
Min_SecondChar2 = #$A1; Max_SecondChar2 = #$FE;
Big5SecondChar = [Min_SecondChar1..Max_SecondChar1,
Min_SecondChar2..Max_SecondChar2]; function IsBig5(const S: string):Boolean; // Empty is NOT Big5
begin
result:=false;
If length(s)<2 then exit;
if not (S[2] in Big5SecondChar) then exit;
Case S[1] of
#$A1..#$A2,#$A4..#$C5,#$c9..#$F8: result:=true;
#$A3: result:=(s[2]<=#$BF) or ((s[2]=#$E1) and AllowWindowsExtension);
#$C6: result:=s[2]<=#$7E;
#$F9: result:=(s[2]<=#$D5) or AllowWindowsExtension;
end;
end;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |