Delphi2010下,中文字符串的问题,怎么转化都不行。

flyboye 2016-02-05 08:51:17
function TForm1.myHextoStr(S: string): string;
var
hexS:string;
tmpstr:string;
i,k,n:integer;
a:byte;
begin
hexS :=s;
k:=length(hexS);
if k mod 2=1 then
begin
hexS:=hexS+'0';
end;
n:=k div 2;
tmpstr:='';
for i:=1 to n do
begin
a:=strtoint('$'+hexS[2*i-1]+hexS[2*i]);
tmpstr := tmpstr+chr(a);
end;
result :=tmpstr;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
str: String;
begin
Edit3.Text :=myHextoStr('B6ABB6AB');
end;

上面的代码myHextoStr其实是要把串转化为16进制后再组成汉字,但输出的一直是乱码,正确的是“东东”,同样的代码我在php下是能正确输出的,但delphi下一直不行。
我把最后一行改为这样也不行。
Edit3.Text :=Utf8ToAnsi(myHextoStr('B6ABB6AB'));

请帮帮看看,感激不尽啊!
...全文
250 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hj8090 2016-02-06
  • 打赏
  • 举报
回复
Str和Hex转换的通用方法:参照IniFiles的ReadBinaryStream和WriteBinaryStream,稍加修改即可。
flyboye 2016-02-06
  • 打赏
  • 举报
回复
感谢:wr960204、hj3000,已经可以了,结贴了。
武稀松 2016-02-05
  • 打赏
  • 举报
回复 1
function HexToUnicodeString(HexStr: string): String; var hexS: string; tmpstr: TBytes; i, k, n: integer; a: byte; begin hexS := HexStr; k := length(hexS); if k mod 2 = 1 then begin hexS := hexS + '0'; end; n := k div 2; SetLength(tmpstr, n); for i := 1 to n do begin a := strtoint('$' + hexS[2 * i - 1] + hexS[2 * i]); tmpstr[i-1] := (a); end; result := TEncoding.Default.GetString(tmpstr); end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧