UTF-8字符串转为AnsiString

2008-04-09 04:31:16来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

//江雪 2001.06.11 http://asnowcn.at.china.com //将UTF-8字符串转为代码页为CodePage的AnsiString。 function UTF8ToAnsiString(utf8str:string; CodePage:integer):AnsiString; var i:integer; buffer:widestring; ch,c1,c2:byte; begin result:=''''''''; i:=1; while i<=Length(utf8str) do begin ch:=byte(utf8str[i]); setlength(buffer,length(buffer) 1); if (ch and $80)=0 then //1-byte buffer[length(buffer)]:=widechar(ch) else begin if (ch AND $E0) = $C0 then begin // 2-byte inc(i); c1 := byte(utf8str[i]); buffer[length(buffer)]:=widechar((word(ch AND $1F) SHL 6) OR (c1 AND $3F)); end else begin // 3-byte inc(i); c1 := byte(utf8str[i]); inc(i); c2 := byte(utf8str[i]); buffer[length(buffer)]:=widechar( (word(ch AND $0F) SHL 12) OR (word(c1 AND $3F) SHL 6) OR (c2 AND $3F)); end; end; inc(i); end; //while i := WideCharToMultiByte(codePage, WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR, @buffer[1], -1, nil, 0, nil, nil); if i>1 then begin SetLength(Result, i-1); WideCharToMultiByte(codePage, WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR, @buffer[1], -1, @Result[1], i-1, nil, nil); end; end;

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:dephi 程序输入法中英文自动切换实现的源代码

下一篇:界面色彩渐变效果的实现