例如:
有字符串"程序ABC",轉碼後應該是:
ASCII:B57BA7C7414243
UTF-8:E7A88BE5BA8F414243
Unicode:0B7A8F5E410042004300應該用函數如何轉?謝謝!

解决方案 »

  1.   

    UNICODE我已經知道如何互相轉了,請各位賜教如何將字符串轉ASCII/UTF-8
      

  2.   

    uses
      system;function AnsiToUtf8(const S: string): UTF8String;
    HELP里可以查到所有字符转换的内容的
      

  3.   

    ASCII也解決了,StrTohex函數,剩下的是UTF-8,哪位高手進來把問題砍掉?
      

  4.   

    to  samchung(酸菜) :結果不是我想要的;
      

  5.   

    var
      S: string;
      s8: UTF8String;
      i: Integer;
      P: PChar;
      sOut: string;
    begin
      s := '程序ABC';
      s8 := AnsiToUtf8(s);
      P := pchar(s8);
      sOut := '';
      for I := 0 to length(s8) - 1 do begin    // Iterate
        sOut := sOut + uppercase(inttohex(byte(p^), 2));
        inc(p);
      end;    // for
      Application.MessageBox(pchar(sOut), '', MB_OK + MB_ICONINFORMATION);
    end;
      

  6.   

    不好意思问一下,你用的StrTohex是VCL标准库里的吗,是delphi6?哪个单元的?还是你自己写的?
      

  7.   

    //===============String to Hex===================
    function StrToHex(sStr:string):string;
    var
        i:integer;
        sHex:string;
    begin
        if sStr='' then exit;
        for i:=1 to Length(sStr) do
            sHex:=sHex+inttohex(ord(sStr[i]),2);
        Result:=sHex;
    end;
      

  8.   

    //将你的过程改写为函数,方便调用;
    //================String to UTF-8==============
    function StrToUTF8(sStr: String):string;
    var
      UTF8: UTF8String;
      i: Integer;
      P: PChar;
      S: string;
    begin
      UTF8 := AnsiToUtf8(sStr);
      P := pchar(UTF8);
      S := '';
      for I := 1 to Length(UTF8) do begin
        S := S + uppercase(inttohex(byte(p^), 2));
        Inc(p);
      end;
      Result:=S;
    end;
    //谢了,分数全给你!
      

  9.   

    经过上面UTF8方式编码后字符串的长度暴长,会增长到原字符串的3倍多!比如一个长度为134的字符串,经过编码后的长度就达到了402;长度为55的字符串,编码后也达到了162!我觉得这样的编码方式太过冗长,不知道有没有办法精简一下的?
      

  10.   

    老大,這個是顯示編碼,不是轉碼,當然會變長啊;一個普通字符佔4個UNICODE字節嘛,而普通一個字符佔1個字節嘛,編碼後當然的會變長咯
    例如:CSDN -->轉UNICODE後,就是 4300530044004E00
    CSDN中文 -->轉UTF-8,就是 4353444EE4B8ADE69687自己算算這樣轉後會有多少個自己增加了?