下面函数将英文字符变成Unicode的编码,换比如字符'12',经过下面转换成为: 3119   ,那么反过来函数如何写:将 3119 还原成 12  ?只要英文的,中文已经写出.
function EncodeEString(var s:String):String;
var
  i,j,len:Integer;
  cur:Integer;
  t:String;
begin
  Result:='';
  len:=Length(s);
  i:=1;j:=0;
  while i<=len do
  begin
    if i<len then
       cur:=(ord(s[i]) shr j) or ((ord(s[i+1]) shl (7-j)) and $ff)
    else
       cur:=(ord(s[i]) shr j) and $7f;
    FmtStr(t,'%2.2X',[cur]);
    Result:=Result+t;
    inc(i);
    j:=(j+1) mod 7;
    if j=0 then inc(i);
  end;
end;

解决方案 »

  1.   

    给你一段代码,UNICODE转英文和中文有区别吗,?//把字符串转换成四位十六进制编码
    Function MyTenToHex(SStr:String):String;
    var
        i:Integer;
        TStr:String;
    begin
        for i:=1 to Length(SStr) do
            TStr:=TStr+IntToHex(Ord(Sstr[i]),2);
        Result:=TStr;
    end;Function MyHexToTen(SStr:String):String;
    var
        i:Integer;
        TStr:String;
    begin
        for i:=1 to Length(SStr) div 2 do
            TStr:=TStr+Chr(Strtoint('$'+Sstr[2*i-1]+Sstr[2*i]));    Result:=TStr;
    end;
      

  2.   

    Unicode只是一种统一编码的规范具体编码格式我们只讲UCS2、UCS4、UTF-7、UFF-8这些,其中UTF-7/8英文字母和其ASCII码完全相同,UCS2/UCS4只要做截断即可。