导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
chjk (ChJK)
★☆☆☆☆
-
盒子活跃会员
2009/1/12 16:33:06
标题:
加入我的收藏
楼主:
想写一个用google搜索网页程序,可惜被UTF-8给难住,希望高手给帮忙解决一下 Button_Click(Sender: TObject); var sa: String; sw: WideString; begin if Trim(Edit_GoogleSearch.Text)='' then exit; sw := AnsiReplaceStr(Edit_GoogleSearch.Text,' ','+'); sa := sw; sa:= AnsiToUtf8(sa); sa:='http://www.google.com/search?hl=en&q='+sa; ShellExecute(Handle, 'open', PAnsiChar(sa), nil,nil, SW_SHOWNORMAL); 不知道为什么转成的Utf8字符时不全, 比如说将“你好”转换成UTF8时没有问题是‘%E4%BD%A0%E5%A5%BD’,但是如果是“死神”转换成UTF8时却是‘%E6%AD%BB%E7?’而不是‘%E6%AD%BB%E7%A5%9E’,也就是说没有将其转换全。
----------------------------------------------
-
作者:
2009/1/12 17:34:31
1楼:
在後面加一個空格,再轉換。
----------------------------------------------
-
作者:
egust (欢迎访问 Delphi@smth.org)
★☆☆☆☆
-
普通会员
2009/1/12 19:31:57
2楼:
我用你的代码没问题啊,d7下完全正常 var sa : AnsiString; su8 : UTF8String; begin sa := Trim(Edit1.Text); if(Length(sa)=0)then Exit; sa := StringReplace(sa, ' ', '+', [rfReplaceAll]); su8 := AnsiToUtf8(sa); sa := Format('http://www.google.com/search?hl=en&q=%s& #39;, [su8]); ShellExecute(Handle, 'open', PAnsiChar(sa), nil,nil, SW_SHOWNORMAL); end; d2009下改成: var sw : String; su8 : AnsiString; begin sw := Trim(Edit1.Text); if(Length(sw)=0)then Exit; sw := StringReplace(sw, ' ', '+', [rfReplaceAll]); su8 := UTF8Encode(sw); sw := Format('http://www.google.com/search?hl=en&q=%s& #39;, [PAnsiChar(su8)]); ShellExecute(Handle, 'open', PWideChar(sw), nil,nil, SW_SHOWNORMAL); end;
----------------------------------------------
cnblogs中我写的关于Delphi的blog,欢迎访问: http://www.cnblogs.com/egust/
作者:
chjk (ChJK)
★☆☆☆☆
-
盒子活跃会员
2009/1/13 9:33:17
3楼:
我的也是D7可是不行,转换后打开浏览器还是老毛病,我用的是Opera浏览器
----------------------------------------------
-
作者:
chjk (ChJK)
★☆☆☆☆
-
盒子活跃会员
2009/1/13 9:49:14
4楼:
知道问题所在了是因为浏览器的原因,如果是IE就没问题了,但是新的问题又来了,就在IE的地址框里会出现‘姝荤’,而不是‘%E6%AD%BB%E7%A5%9E’编码,请问有办法解决吗?
----------------------------------------------
-
作者:
egust (欢迎访问 Delphi@smth.org)
★☆☆☆☆
-
普通会员
2009/1/13 11:59:08
5楼:
自己convert一下,把所有要查找的字符都转成16进制'%HH'的形式然后再打开(实际上非space的ascii字符不需要转换)
----------------------------------------------
cnblogs中我写的关于Delphi的blog,欢迎访问: http://www.cnblogs.com/egust/
作者:
chjk (ChJK)
★☆☆☆☆
-
盒子活跃会员
2009/1/13 13:40:27
6楼:
这样的话会不会使英文也变成16进制啊?
----------------------------------------------
-
作者:
egust (欢迎访问 Delphi@smth.org)
★☆☆☆☆
-
普通会员
2009/1/13 13:50:42
7楼:
会,但是不影响
----------------------------------------------
cnblogs中我写的关于Delphi的blog,欢迎访问: http://www.cnblogs.com/egust/
作者:
chjk (ChJK)
★☆☆☆☆
-
盒子活跃会员
2009/1/13 17:28:23
8楼:
我其实就是想能达到google那样的就可以了英文就是英文,汉字就是utf8的%HH形式,不知有没有好的方法啊?
----------------------------------------------
-
作者:
egust (欢迎访问 Delphi@smth.org)
★☆☆☆☆
-
普通会员
2009/1/13 17:52:41
9楼:
可以啊,两个PAnsiChar跑,遇到英文和数字就直接复制,其它的转换呗
----------------------------------------------
cnblogs中我写的关于Delphi的blog,欢迎访问: http://www.cnblogs.com/egust/
作者:
chjk (ChJK)
★☆☆☆☆
-
盒子活跃会员
2009/1/14 9:48:46
10楼:
哈哈解决了!谢谢大家的帮助了!
----------------------------------------------
-