永发信息网

Utf8编码转换问题 Delphi

答案:2  悬赏:40  手机版
解决时间 2021-04-28 05:53
怎样把 ( 你好 ) 这样的编码转换成中文

要求:给出Delphi7的具体代码...
最佳答案

//将UTF-8编码转为ANSI编码
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;


这是我百度博客上的技术文,你可以去看一下,有问题可以去那里留言……


http://hi.baidu.com/ray108/blog/item/be69e4423c9df3189313c6a8.html

全部回答

用过滤器啦

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
九零后、与八零后的区别?
女生什么时间洗澡最好
一首高潮为 tonight ...tonight ...tonight..
请问谁有回潮州韩师的订票号码?长号哦!尽快
晨晞教育中心地址在哪,我要去那里办事
2个月的宝宝白天黑夜老是睡不好怎么办啊?
是什么意思,日付利月结息什么意思
500元之间的诺基亚手机好看好用的有没??
为什么我的问问我的那个显示不出来看图片
推荐一台联想电脑4000左右
炫舞为什么老这样、进不了
财付通、绑定
Mary and her friends are have breakfast
QQ音速的情侣!怎么办好?
哪个帅气.好看
推荐资讯
淘宝编辑宝贝描述时不显示编辑栏怎么办啊,wi
我嫂子怀了双胞胎,宝宝还没生下来,哥哥就要
有没有阳谷直达济南的火车
描写秋天葡萄的句子,幽默笑话/歇后语/
有什么方法能快速赚钱?
2010的QQ怎么没有等级显示
谁认识她 帮我认认
买什么东西大家喜欢偷偷摸摸的``
曹丕和曹植兄弟骨肉相残.打一成语
求马小今年升上四中既有几多人
博鳌玉带湾酒店是几星级的
听qq音乐在qq外观显示不出来
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?