首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

\u60a8\u7684\u9a8c\u8bc1\u7801\u9519\u8bef小弟我用IDHTTP接收到如此的数据然后如何解码啊

2012-03-23 
\u60a8\u7684\u9a8c\u8bc1\u7801\u9519\u8bef我用IDHTTP接收到如此的数据然后怎么解码啊。最近被解码问题困

\u60a8\u7684\u9a8c\u8bc1\u7801\u9519\u8bef我用IDHTTP接收到如此的数据然后怎么解码啊。
最近被解码问题困扰得不得了,请大家帮忙我怎么解码如此的字符串。谢谢啊。部分代码如下,
 gethttp.Get(url,response);
 memo1.Lines.Add(response.datastring);


[解决办法]
这段字符串的确是UTF16编码,也就是我们D中的WideString类型,
即一个字符十六位,然后将这十六位的二进制转换成十六进制字符串而已,
转换算是简单了,早上帮你写了一个,你自已查查有没有BUG,
\u60a8\u7684\u9a8c\u8bc1\u7801\u9519\u8bef
转换出来是:
您的验证码错误


uses
StrUtils,Math;



function XDigit(Ch : AnsiChar) : Integer;
begin
if (Ch >= '0') and (Ch <= '9') then
Result := Ord(Ch) - Ord('0')
else
Result := (Ord(Ch) and 15) + 9;
end;


Function UTFStrToUnicode(UTFStr:AnsiString):WideString;
var
I:Integer;
Index:Integer;
HexStr:String;
LowerCaseUTFStr:String;
WChar:WideChar;
WCharWord:Word;
AChar:AnsiChar;
begin
////\u60a8\u7684\u9a8c\u8bc1\u7801\u9519\u8bef
Result:='';
LowerCaseUTFStr:=LowerCase(UTFStr);
Index:=PosEx('\u',LowerCaseUTFStr,1);
while Index>0 do
begin
HexStr:=Copy(LowerCaseUTFStr,Index+2,4);
WCharWord:=0;
//HexStr=60a8
for I := 1 to Length(HexStr) do
begin
AChar:=AnsiChar(HexStr[I]);
WCharWord:=WCharWord+XDigit(AChar)*Ceil(Power(16,4-I));
end;
WChar:=WideChar(WCharWord);
//WChar=您
Result:=Result+WChar;
Index:=PosEx('\u',LowerCaseUTFStr,Index+6);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//\u60a8\u7684\u9a8c\u8bc1\u7801\u9519\u8bef
//您的验证码错误
Self.Edit2.Text:=UTFStrToUnicode(Self.Edit1.Text);
end;

热点排行