小弟近日做一个小项目,需要用到打开IE并传递地址给它,但现在遇到的最大问题是中文不能转换成URL字符,比如'中国'会被转换成'%E4%B8%AD%E5%9B%BD'(javascript中的encodeURIComponent()便能实现这一转换),我知道Delphi7自带一个HTTPEncode的函数,但是它会把'中国'转换成'%D6%D0%B9%FA',这两个是完全不一样的,小弟跪求:怎样实现delphi中把'中国'转换成'%E4%B8%AD%E5%9B%BD',在线等待,感激!!,我的家当全部奉上100分,拜托。

解决方案 »

  1.   

    很简单,先用AnsiToUtf8
    转成UTF-8
    然后再用NMURL1控件转
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s:string;
    begin
      s:='中国';
      s:=AnsiToUtf8(s);
      NMURL1.InputString:=s;
      Edit1.Text:=NMURL1.Encode;
    end;
      

  2.   

    另外,你也可用HTTPEncode
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s:string;
    begin
      s:='中国';
      s:=AnsiToUtf8(s);
      Edit1.Text:=HTTPEncode(s);
    end;
      

  3.   

    procedure TForm2.Button4Click(Sender: TObject);
    const
      dd = '中国';
    begin
      Edit1.Text := HttpEncode(AnsiToUtf8(dd));
    end;
      

  4.   

    不行啊,大哥,用HttpEncode(AnsiToUtf8(dd))转出来的是 '%C3%96%C3%90%C2%B9%C3%BA' 而不是'%E4%B8%AD%E5%9B%BD'啊,看来只能再试试NMURL1.Encode了.
      

  5.   

    var 
     s: string;
    begin
     ..
     HttpEncode(AnsiToUtf8(s));就是你要的
      

  6.   

    唉,郁闷啊,找不到TNMURL控件啊,我用的是delphi7,麻烦指点一二。
      

  7.   

    上面的代码已经可以,你自己没认真测试
    原来的控件delphi7里何处寻? 经常有朋友提这样的问题,“我原来在delphi5或者delphi6中用的很熟的控件到哪里去了?是不是在delphi7中没有了呢?这是不是意味着我以前写的代码全都不能够移植到delphi7中来了呢?是不是我必须学习适应这些新的控件呢?” 现在我就对这一问题进行解释,并对在delphi7中的VCL以及CLX进行一下总结,方便有这方面需求的朋友进行查询dclisp70.bpl(Borland Internet Solutions Pack Components)
    包括的控件:TFTP、THTML、THTTP、TNNTP、TPOP、TSMTP、TTCP、TUDP
      

  8.   

    我现在的delphi7居然不能输入中文了,我装的是英文版的win2003,区域设置为中文。不能输入,只能拷贝中文进去,然后显示正常,但是如果用鼠标选择中文字符,就会变成乱码,在delphi中我把粘贴进去的'中国'拷贝到这里就变成了'Öйú',我用HttpEncode(AnsiToUtf8(s));不能实现是不是这个原因啊?
      

  9.   

    刚刚在delphi测试,
    HttpEncode(AnsiToUtf8(s));
    就是你要的结果了
      

  10.   

    请按下面这个原样试一下,然后再检查你现在的代码
    procedure TForm2.Button4Click(Sender: TObject);
    const
      dd = '中国';
    begin
      Edit1.Text := HttpEncode(AnsiToUtf8(dd));
    end;
      

  11.   

    感谢兄弟们的帮助,我现在在自己家的电脑上试了,完全没有问题,HttpEncode(AnsiToUtf8(dd)), 所以感激不尽,今天在另外一台电脑上试不行可能是由于不能支持中文的原因吧。另外不知道我给的分合不合大家的意,如果给的不好望见谅。