试一下吧,不知行不行。
function DecodeChinese(InputStr:string):string;
var
Buf:Array[0..299] of WideChar;
i:integer;
begin
While(i<Length(InputStr)-1) do
begin
Buf[round(i/4)]:=WideChar(StrToInt('0x'+Copy(InputStr,i+1,4)));
inc(i,4);
end;
Buf[round(Length(InputStr)/4)]:=WideChar(0);
Result:=WideCharToString(Buf);
end;
function DecodeChinese(InputStr:string):string;
var
Buf:Array[0..299] of WideChar;
i:integer;
begin
While(i<Length(InputStr)-1) do
begin
Buf[round(i/4)]:=WideChar(StrToInt('0x'+Copy(InputStr,i+1,4)));
inc(i,4);
end;
Buf[round(Length(InputStr)/4)]:=WideChar(0);
Result:=WideCharToString(Buf);
end;
解决方案 »
- 整型数据问题
- 用DELPHI6调用Webservice,返回内容有照片的XML,在程序中就报个错误,谁知道怎么回事?
- 求1stClass4000密码
- dbgrideh的标题怎么设,在线给分!!!!
- 急求COM口通讯控件
- 100分求解!
- 有什么办法在,程序中显示GIF图片啊?
- 请问扫雷程序的Button是不是动态创建的?如何创建(是不是提前定义足够多的变量呢?)?
- jiaorg(jiaorg)请进:有关于代理服务器程序的问题请教
- 请问哪里可以下到关于installsheild 方面的文章?
- 怎 样 将 d b g r i d 设 为 每 一 行 不 同 的 颜 色 ? 求 加 密 、 解 密 算 法
- 请问在delphi中如何实现超级链结的功能,比如一点label1框就弹出ie转向www.sohu.com
胡乱的翻译了一把
仅供参考
敬请高人指点
function DecodeChinese(InputStr: String): String;
var
Buf: array[0..299] of WideChar;
i : Integer;
iLen : Integer;
begin
iLen := Length(InputStr);
i := 1;
while i < iLen + 1 do
begin
Buf[i div 4] := WideChar(Chr(StrToInt('$' + Copy(InputStr, i, 4))));
i := i + 4;
end;
Buf[iLen + 1] := #0;
Result := WideCharToString(Buf);
end;如果不对,给出一个可以测试的例子,我在改
然后把输入字符串的每4个字符加上‘0X’,并转换成整数写入buffer中,
Buf[InputStr.Length()/4]=0;这一句不懂,然后WideCharToString返回结果
var
buf: array [0..299] of WideChar;
P,TempP:PWideChar;
i:Integer;
L:Integer;
begin
L:=Length(InputStr);
i:=0;
while i< L do
begin
P:=@Buf[i div 4];
P:=StringToWideChar(IntToStr(StrToInt('$'+copy(InputStr,i+1,4))),TempP,4);
i:=i+4;
end;
Buf[L div 4]:='0';
P:=Buf;
result:= P;
end;
这个函数是用来进行编码变换,大体过程跟cobi说的差不多,
我也不太清楚具体的算法,所以请大家看看根据这段CB程序,能不能找到什么规律
下面是它的反算函数,即将GB2312的中文编码的函数转化为CP936的Unicode编码,
希望对大家能有帮助
function EncodeChinese(var s:WideString):String;
var
i,len:Integer;
cur:Integer;
t:String;
begin
Result:='';
len:=Length(s);
i:=1;
while i<=len do
begin
cur:=ord(s[i]);
//BCD转换
FmtStr(t,'%4.4x',[cur]);
Result:=Result+t;
inc(i);
end;
end;
var
i:integer;
begin
Result := '';
While(i<Length(InputStr)-1) do
begin
Result := Result +
WideCharToString(WideChar(StrToInt('$'+Copy(InputStr,i+1,4))));
inc(i,4);
end;
end;
现在写出来与各位共享。
函数如下
function DecodeChinese(InputStr: string): string;
var
Buf:Array[0..299] of WideChar;
i:integer;
begin
i:=0 ;
while(i<Length(InputStr))do
begin
Buf[(i div 4)]:=WideChar(StrToInt('0x'+Copy(InputStr,i+1,4)));
inc(i,4);
end;
Buf[Length(InputStr)div 4]:=WideChar(0);
result:=WideCharToString(Buf);
end;该函数可能还不太强健,仅供参考。我现在正在做中文短信息方面的东西,
如果有同行的朋友,可以留下联系方法,大家交流:
我的信箱: [email protected]
现在写出来与各位共享。
函数如下
function DecodeChinese(InputStr: string): string;
var
Buf:Array[0..299] of WideChar;
i:integer;
begin
i:=0 ;
while(i<Length(InputStr))do
begin
Buf[(i div 4)]:=WideChar(StrToInt('0x'+Copy(InputStr,i+1,4)));
inc(i,4);
end;
Buf[Length(InputStr)div 4]:=WideChar(0);
result:=WideCharToString(Buf);
end;该函数可能还不太强健,仅供参考。我现在正在做中文短信息方面的东西,
如果有同行或感兴趣的朋友,可以留下联系方法,大家交流:
我的信箱: [email protected]