我用Tnt等控件可以显示韩文,但是我需要把韩文进行Unicode编码处理,就是把韩文转换成Unicode编码16进制为:FF1A 这样形式(另外还要处理成Utf-8编)。
  比如:‘추가하나요? ’韩文转换成  16进制 这样形式
  弄了一个晚上也没有处理,必须要去睡觉了,所以把这个问题帖出来,希望有此经验的朋友帮我,先谢谢了!   

解决方案 »

  1.   

    注::‘추가하나요? ’ 是正式显示韩文,不是这样的编码。目前CSDN论坛不支持韩文显示:(
     
        其实这样的“&#52628”的编码我估计是Utf-8编码,如果大家知道如何转换的也请告诉我,谢谢!^_^
      

  2.   

    uses
      HTTPapi;HTTPEncode(s);
      

  3.   

    ws: WideString;ws := TntEdit1.Text;// ws 的每个字符是 WideChar, 可以转换为 Word. 形如 Word(ws[1]),将一个Word转换或显示为16进制没有难度吧.// 下面函数将Unicode串转换成 UTF-8 串
    function EncodeUTF8(const s:WideString; maxlen: integer): String;
    var
      i,len:Integer;
      cur:Integer;
      t: String;
      cv: Byte;
    begin
      Result:='';
      len:=Length(s);
      i:=1;
      while i <= len do
      begin
        cur := ord(s[i]); //BCD转换
        if cur <= $7F then //单字节
        begin
          t := Char(cur);
        end
        else if cur <= $7FF then //双字节
        begin
          t := Char($80 + cur and $3F);  cur := cur shr 6;
          t := Char($C0 + cur)+ t;
        end
        else if cur <= $FFFF then //三字节
        begin
          t := Char($80 + cur and $3F);  cur := cur shr 6;
          t := Char($80 + cur and $3F) + t;  cur := cur shr 6;
          t := Char($E0 + cur) + t;
        end
        else if cur <= $1FFFFF then //四字节
        begin
          t := Char($80 + cur and $3F);  cur := cur shr 6;
          t := Char($80 + cur and $3F) + t;  cur := cur shr 6;
          t := Char($80 + cur and $3F) + t;  cur := cur shr 6;
          t := Char($F0 + cur)+ t;
        end
        else if cur <= $3FFFFFF then //五字节
        begin
          t := Char($80 + cur and $3F);  cur := cur shr 6;
          t := Char($80 + cur and $3F) + t;  cur := cur shr 6;
          t := Char($80 + cur and $3F) + t;  cur := cur shr 6;
          t := Char($80 + cur and $3F) + t;  cur := cur shr 6;
          t := Char($F8 + cur)+ t;
        end
        else //if cur <= $7FFFFFFF then //六字节
        begin
          t := Char($80 + cur and $3F);  cur := cur shr 6;
          t := Char($80 + cur and $3F) + t;  cur := cur shr 6;
          t := Char($80 + cur and $3F) + t;  cur := cur shr 6;
          t := Char($80 + cur and $3F) + t;  cur := cur shr 6;
          t := Char($80 + cur and $3F) + t;  cur := cur shr 6;
          t := Char($FC + cur)+ t;
        end;
        if Length(Result) + Length(t) > maxlen then
          Break;
        Result := Result + t;
        inc(i);
      end;
    end;