比如 取出来的是 "涓冨彴娌冲競閼"
怎么样转成正常的字符呢;
数据库字段是blob型的,取出来后,怎么转换还是乱码,比较郁闷;
首先数据库是不能改动的,那怎么样才能使显示出来的时候正常的呢 ?也就是 blob-->string ;

解决方案 »

  1.   

    var
      str: string;
    begin
      str := '涓冨彴娌冲競閼';
      ShowMessage(Utf8ToAnsi(str));
    end;
      

  2.   

    To--bdmh
    我是读取别人数据库的字段信息.To--妖哥
    这个函数俺试过了的,弹出来是空白字符呢;
      

  3.   

    我用fields.asstring  保存到文本里 
    开头部分:?TextBox1^20060917ED2AA9001337^TextBox2^涓冨彴娌冲競閼垚鎴垮湴浜у紑...
      

  4.   

    你用的Delphi7吧?换这个试试:
    var
      str: WideString;
    begin
      str := '涓冨彴娌冲競閼垚鎴垮湴浜у紑';
      ShowMessage(Utf8ToAnsi(str));
    end;这个翻译出来是“七台河市鑫成房地产开”
      

  5.   

    因为我用Delphi2010测试的,D2010中String默认是UnicodeString,D7默认是AnsiString,所以结果有差别。
      

  6.   

    嗯 d7 呢 ;
    怪了...
    我早上用 string  也不行的;
    你上面发的 string  用的是 2009 以上版本?
      

  7.   

    你就根据我在5楼提示的做就行了,将字段内容读取到WideString变量中,然后用Utf8ToAnsi转换后就是正确结果。
    我在D7和CBuilder6中试验过,没问题。
      

  8.   

    又回来早上的问题了...是不是字符数太多的原因呢?长度有 3377
    var
      str: WideString;
      dq:Tadoquery;
    begin
        dq:=Tadoquery.create(nil);
        with dq do
        begin
          Connection:=ADOConnection1;
          sql.Text:='select BARGAINCONTENT from ys_bargain_template  where TEMPLATEID=1380';
          Open;
          Memo1.Text :=(Fields[0].AsString); //乱码中...
          str:=VarToWideStr(Fields[0].AsVariant);
          showmessage(str); //有信息 也是乱码
          Memo2.Text :=Utf8ToAnsi(str); //居然空白?
          showmessage(Utf8ToAnsi(str)); //居然空白?
        end;
    end;
      

  9.   

    你直接把Fields[0].AsString的值赋给str就行了,何必转来转去呢?