先介绍一下,Delphi中处理Google的URL编码解码,其中就会明白URL编码转换的方法的

从delphi的角度看Google(谷歌)URL编码解码方式 
在网上搜索了一下,似乎没有什么关于google的URL编码解码的很详细的资料,因此在这里写一下,希望给有用的人提供一点帮助。 
使用google谷歌搜索一下关键词,对应的编码如下: 
刀:%E5%88%80 
刀具:%E5%88%80%E5%85%B7 
刀具网:%E5%88%80%E5%85%B7%E7%9A%84 
因此可见,google对URL的编码并非简单的httpencode编码,因为httpencode编码后的字符串应该是带有两个百分号的,而这个是三个百分号。多尝试一下就不难发现googleURL的编码解码规则如下:
1、编码,先UTF8编码,然后再URL编码。 
      使用delphi编码的方法:加入待编码原始字符串为OiginStr,则编码后的字符串为: 
      NewStr:=HttpEncode(UTF8Encode(OiginStr)) 
      其中HttpEncode函数需要用到HttpApp,记得uses中加入。 
2、解码,先URL解码,然后再UTF8解码。 
      使用delphi解码的方法:加入待解码字符串为NewStr,则解码后的原始字符串为: 
      OiginStr:=UTF8Decode(HttpDecode(NewStr)) 
      其中HttpEncode函数需要用到HttpApp,记得uses中加入。 
相对来说百度就简单得多,一个httpencode就搞定了

对于特殊字符如 *,空格等,Delphi会编译成* 和+,这样就不能通过URL编译,所以需要用到下面的函数。

function StringReplace (const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

rfReplaceAll:全部替换
rfIgnoreCase:忽略大小写

For Example:

var
    aStr: String;
begin
    aStr := 'This is a book, not a pen!';
    ShowMessage(StringReplace (aStr, 'a', 'two', []));//This is two book, not a pen!只替换了第一个符合的字
    ShowMessage(StringReplace (aStr, 'a', 'two', [rfReplaceAll]));//This is two book, not two pen!替换了所有符合的字
    aStr := 'This is a book, not A pen!';
    ShowMessage(StringReplace (aStr, 'a', 'two', [rfReplaceAll]));//This is two book, not A pen!只替换了符合的字(小写a)
    ShowMessage(StringReplace (aStr, 'a', 'two', [rfReplaceAll, rfIgnoreCase]));//This is two book, not two pen!不管大小写替换了所有符合的字
end;

这样,我们只有调用两次stringreplace函数就搞定了。

http://blog.csdn.net/syndicater/article/details/17787065

最新文章

  1. 16-1-27---图解HTTP(02)
  2. 中国电信大亚DP607光猫破解,设置路由,wifi!关闭远程管理,改连接限制,SN码查询!
  3. Greedy:Cleaning Shifts(POJ 2376)
  4. 题目1005:Graduate Admission
  5. C如何使用内存
  6. Call to undefined function pg_
  7. c# winfrom 委托实现窗体相互传值
  8. vsftpd配置---------------------之chroot_local_user和chroot_list_enable含义
  9. 【Android Developers Training】 87. 序言:同步到云
  10. zookeeper启动异常
  11. Cloudstack网络分析-基本网络
  12. 项目部署Vue+Django(luffy)
  13. 运维笔记--ubuntu管理启动项
  14. vs2017 代码格式化 文档排版 编辑 设置文档的格式
  15. Linux常用命令汇总 - Linux Shell Cheat Sheet
  16. 2.vo传参模式和ModerDriven传参模式
  17. reac——父组件向子组件传递值,子组件何时能同步获得父组件改变后的值
  18. Maximum Flow and Minimum Cut
  19. Android 对话框(Dialogs)
  20. Storm完整例子

热门文章

  1. CentOS 6.5开放80端口方法
  2. 符号函数(sign function)性质及应用
  3. 【心情】CF
  4. WPF中 PropertyPath XAML 语法
  5. 机器学习: t-Stochastic Neighbor Embedding 降维算法 (二)
  6. eclipse中JUnit工具的使用
  7. Mysql主从复制,读写分离(mysql-proxy)
  8. [Elasticsearch] 分布式搜索
  9. matlab 警告(warning)、错误(error)、异常(exception)与断言(assert)
  10. Codeforces Round #263 (Div. 2) proA