如何映射Unicode与ANSI/DBCS的CodePage |
尚未結案
|
mustapha.wang
資深會員 發表:89 回覆:409 積分:274 註冊:2002-03-13 發送簡訊給我 |
在用widnows的API函数WideCharToMultiByte时,可以把一个Unicode字串转到一个CodePage下的字串。
但如果Unicode字串是多个CodePage的资料混杂在一起的呢?如:
太阳《←㊣》Aتحديد خرج مواد لمجموعة A조계량석백설정
无论用哪个CodePage都会出现部分乱码。 有没有API函数可以识别某个Unicode字符是对应到哪个CodePage区的?
windows API GetStringTypeExW可以判断出一个Unicode字符的性质,但还是不能判断是哪个CodePage,郁闷!
procedure TForm1.Button5Click(Sender: TObject); var P:PWideChar; WResult:Word; begin P:=PWideChar(tntEdit1.Text); while P^<>#0 do begin Windows.GetStringTypeExW(LOCALE_SYSTEM_DEFAULT,CT_CTYPE3,P,1,WResult); TntMemo1.Lines.Add(WideString(P^)+':'+InttoHex(WResult,4)); Inc(P); end; end;我需要判断的目的是要统计字串的长度,不是Length(WideString),这个得到字符数,我要SBCS是1,DBCS是2这样统计。 如果我知道某个Unocode字符是对应到DBCS的话,就好了。 DBCS在Unicode里到底映射为那几个区段,$3000以上........?? 久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |