DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: tkzcol
今日帖子: 35
在线用户: 6
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 chjk (ChJK) ★☆☆☆☆ -
盒子活跃会员
2009/1/12 16:33:06
标题:
UTF-8的编码问题 浏览:2024
加入我的收藏
楼主: 想写一个用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’,也就是说没有将其转换全。
----------------------------------------------
-
作者:
男 freeman_m530 (jack) ★☆☆☆☆ -
普通会员
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', [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', [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楼: 哈哈解决了!谢谢大家的帮助了!
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS