手头有两个函数,分别如下:
Function MyUnicode(SMSG:string):String;
var
st:String;
i:integer;
a:UCS4String;
b,c:LongWord;
MyCh:char;
begin
a:=WideStringToUCS4String(SMSG);
st:='';
i:=0;
b:=a[i];
while b>0 do begin
c:=b mod 65536;
mych:=char(c div 256);
st:=st+mych;
mych:=char(c mod 256);
st:=st+mych;
i:=i+1;
b:=a[i];
end;
Result:=st;
end;Function StrToUnicode(Str: string):string;
var
t:widestring;
i:integer;
h,l:byte;
begin
t:=widestring(Str);
Result := '';
for i:=1 to length(t) do
begin
h:=hi(ord(t[i]));
l:=lo(ord(t[i]));
Result := Result+ inttohex(h,2)+inttohex(l,2);
end;
end;
其中StrToUnicode('你好')得到的结果是4F60597D
而MyUnicode('你好')得到的结果是 O`Y} 我不太明白,这里边,哪个的结果才是正常的呢?
请哪位大侠帮忙回答一下好吗?
Function MyUnicode(SMSG:string):String;
var
st:String;
i:integer;
a:UCS4String;
b,c:LongWord;
MyCh:char;
begin
a:=WideStringToUCS4String(SMSG);
st:='';
i:=0;
b:=a[i];
while b>0 do begin
c:=b mod 65536;
mych:=char(c div 256);
st:=st+mych;
mych:=char(c mod 256);
st:=st+mych;
i:=i+1;
b:=a[i];
end;
Result:=st;
end;Function StrToUnicode(Str: string):string;
var
t:widestring;
i:integer;
h,l:byte;
begin
t:=widestring(Str);
Result := '';
for i:=1 to length(t) do
begin
h:=hi(ord(t[i]));
l:=lo(ord(t[i]));
Result := Result+ inttohex(h,2)+inttohex(l,2);
end;
end;
其中StrToUnicode('你好')得到的结果是4F60597D
而MyUnicode('你好')得到的结果是 O`Y} 我不太明白,这里边,哪个的结果才是正常的呢?
请哪位大侠帮忙回答一下好吗?
解决方案 »
- 誰能提供win98下屏幕截詞的源代碼呢(Delphi)?
- 如何修改文件的扩展名呢,把.bmp,改为.jpg,如何写这段代码呢?
- 搜索了一个下午了,总结出来的一个问题!
- ActiveXForm开发
- 请教问题,关于进销存软件里的“成本进价核算公式的讨论”
- 为何query.database.commit出错
- 如何获得Listview中的某个listitem的Caption值。
- cxGrid如何让单元格获得焦点并选中单元格的内容
- 我把查询结果导出为Excel表时,为什么原来字段值为这样的'0002332'都变成了'2332'?
- 请问几个问题
- BitBtn的小问题
- 请问用相同的代码对两个oracle数据库中blob字段更新时为什么有的成功有的失败?高难棘手的问题呀
http://edu.tmn.cn/html/5/47/185/2005218/181849.htm