1. 程式人生 > >Delphi url 編碼及轉碼及特殊字串替換--百度和騰訊用的就是這個

Delphi url 編碼及轉碼及特殊字串替換--百度和騰訊用的就是這個

先介紹一下,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函式就搞定了。

相關推薦

Delphi url 編碼特殊字串替換--的就是這個

先介紹一下,Delphi中處理Google的URL編碼解碼,其中就會明白URL編碼轉換的方法的 從delphi的角度看Google(谷歌)URL編碼解碼方式 在網上搜索了一下,似乎沒有什麼關於google的URL編碼解碼的很詳細的資料,因此在這裡寫一下,希望給有用的人提供

linux下大檔案編碼將oracle中資料匯入mysql

        這篇文章有不少廢話,只是為了發洩一下。如果讀者找需要解決的問題的辦法,直接無視這些廢話。             最近做的專案要將Oracle中資料匯入Mysql, 資料量約有兩千萬條,慶幸的是隻有一張表,而且資料結構比較簡單。在這個過程中遇到不少坑,現在

Python編碼格式說明函式encodedecode的使用

從檔案編碼的方式來看,檔案可分為ASCII碼檔案和二進位制碼檔案兩種。 ASCII檔案也稱為文字檔案,這種檔案在磁碟中存放時每個字元對應一個位元組,用於存放對應的ASCII碼。例如,數5678的儲存形式為: ASC碼:  00110101 00110110 00110111 00111000      ↓

FFMPEG切片

由於優優好房上有些視訊需要批量切片,首先想到的就是FFmpeg。 一開始查閱了大量的部落格,論壇,文章,踩了很多坑,後面參照FFmpeg的編譯指南,搞定 在此就不贅述ffmpeg的安裝 http://trac.ffmpeg.org/wiki/CompilationGuide 我選擇的

視訊技術實現詳解

IDC分析指出了三種主要的轉碼需求:不同視訊格式間的轉換,例如從MPEG-2或者MPEG-4轉到H.264;內容傳輸,改變位元率滿足不同網路頻寬或者裝置播放速度的需求;清晰度,將高清視訊轉為標清甚至更低的清晰度,後者反向處理。典型的例子是,為了進行編輯並將資訊上載到網站(

Python——day3_基礎1_集合,文件操作,字符編碼

windows 使用 bject 差集 ise fse style spl dev 集合 集合是一個無序的,不重復的數據組合,它的主要作用如下: 去重,把一個列表變成集合,就自動去重了 關系測試,測試兩組數據之前的交集、差集、並集等關系 常用操作 s = set([3

python學習筆記(集合的使用、文件操作、字符編碼、函數)

函數式編程 close 取值 指定編碼 mage 指定位置 lac 空白 你在 集合 集合(set):把不同的元素組成一起形成集合,是python基本的數據類型。 集合元素(set elements):組成集合的成員 為什麽需要集合? 集合的作用 1 .列表去重復數據

python字符編碼

python字符編碼與轉碼 python2.x字符編碼與轉碼 python3.x字符編碼與轉碼 python 2.x 字符編碼與轉碼打印系統默認編碼格式import sys print(sys.getdefaultencoding())UTF-8 轉 gbk方式:utf-8--轉成--unicod

字符串編碼

-s border content utf-16 .cn 字符編碼 解碼 編碼解碼 同時 需知: 1.在python2默認編碼是ASCII, python3裏默認是unicode 2.unicode 分為 utf-32(占4個字節),utf-16(占兩個字節),utf

字符編碼

tro pytho enc color unicode編碼 image .com bsp nic 參考文章 http://www.cnblogs.com/luotianshuai/articles/5735051.html 轉碼過程 轉碼的例子 #-

quojs :11個處理觸摸事件多點觸摸的JS庫

eal detail true asc tps www ast box asp QuoJs官方文檔http://www.360doc.com/content/15/0504/18/11984479_468037372.shtml ==== 11個處理觸摸事件和多點觸

python---字符編碼

mage 字符 nco tool utf8 toolbar ima nic http 1.在python2:#-*- coding:utf-8 -*- import sys print(sys.getdefaultencoding()) #獲取系統默

令人心煩意亂的字符編碼

編碼 英文 class clas 統一 防止亂碼 不支持 讀取 decode ASC-II碼:英文1個字節(8 byte),不支持中文; 高大上的中國,擴展出自己的gbk、gb2312、gb2318等字符編碼。 由於各個國家都有自己的編碼,於是就需要統一的編碼形式用於國際

URL引數獲取/

JS中對URL進行轉碼與解碼 1.escape 和 unescape escape()不能直接用於URL編碼,它的真正作用是返回一個字元的Unicode編碼值。 採用unicode字符集對指定的字串除0-255以外進行編碼。所有的空格符、標點符號、特殊字元以及更多有聯絡非ASCII字元都將被轉化成%x

URL中中文解碼

在爬取資料是時候很多搜尋的詞語中在瀏覽器上顯示的是中文,但是我們複製url到本地,中文就會出現我們看不懂的文字。 如果我們需要爬蟲的時候也是一樣,我們需要給瀏覽器傳過去的也是對url中的中文進行轉碼之後的url地址,否則在url中的關鍵字直接出現中文會有問題。在python3的環境中的url

Atitit 演算法之道 attilax著 1. 編碼演算法 3 1.1. Base64 htmlencode urlencode 3 1.2. 漢字編碼演算法 演算法 3 2. Ui方面的演算法

Atitit 演算法之道 attilax著   1. 編碼演算法 3 1.1. Base64 htmlencode  urlencode 3 1.2. 漢字編碼演算法   轉碼演算法 3 2. Ui方面的演算法 3 2.1. 軟鍵盤演算

使用URLEncoder、URLDecoder進行URL引數的與解碼

url後引數的轉碼與解碼 import java.net.URLDecoder;import java.net.URLEncoder;   String strTest = "?=abc?中%1&2<3,4>";  strTest = URLEnco

淺談python中的字元編碼

ASCII碼 ASCII碼就是機器能識別的單位元組編碼系統,它是單位元組的。 Unicode編碼 Unicode編碼是一種統一碼、萬國碼、單一碼,它能編碼任何國家的語言,Unicode編碼不管英文

ISO 8859(GBK) 編碼檔案到UTF-8編碼檔案

問題產生:          現需要把一個在windows的Myeclipse下開發的小程式,轉到Linux系統下去安裝執行,結果程式中的.java檔案中的中文到Linux下vim顯示全是亂碼。        現做以下分析:其主要原因是windows中Myeclipse中預

URL中 中文

1.經常遇到需要進行編碼的url. 2.一般情況下,url編碼的引數都是可以獲得的.那麼只需要對這些引數編碼再進行拼湊就可以.3.遇到給了你很多url,你又需要對他進行編碼的時候呢.可以通過正則獲取中