對URL編碼的兩種做法

2021-04-01 23:06:08 字數 1679 閱讀 2401

例如你在http://***.baidu.com/裡面搜尋「愛你w」你將看到位址列裡面出現

注意word=後的「%b0%ae%c4%e3w」就是ie對url編碼的結果,也即是gb轉換成unicode

在.net裡你怎麼獲得這樣的效果呢?web.httputility.urlencode就是用來搞這個東東的,前提是你先新增對

system.web.dll的引用。

這是最簡單的方法,如 msgbox(web.httputility.urlencode("愛你")。(也許你獲得的和實際想得到的不一樣)

別急 msgbox(web.httputility.urlencode("愛你", encoding.default))。ok沒事了吧?謝謝.net帶給你的方便吧!

下面是第二種方法,比較麻煩和原始

dim s as string

dim s1 as byte() = system.text.encoding.default.getbytes("愛你")

dim i as integer = 0

while i < s1.length

s &= "%" & convert.tostring(s1(i), 16)

i += 1

end while

msgbox(s)

如果你要在傳遞的url裡面夾雜英文如「愛你mygirl」就麻煩了,

別激,看看我定義二個function就沒事了

function fomartstring(byval str as string) as string

dim strok as string

dim i, c as integer

dim ischinese as boolean

for i = 1 to len(str)

c = asc(mid(str, i, 1))

if c >= 0 then 'is not chinese

ischinese = false

strok &= mid(str, i, 1)

else 'chinese

strok &= doconv(mid(str, i, 1))

end if

next

fomartstring = strok

end function

『doconv過程是來個中文轉換乙個

function doconv(byval inputstring as string) as string

dim s as string

dim s1 as byte() = system.text.encoding.default.getbytes(inputstring)

dim i as integer = 0

while i < s1.length

s &= "%" & convert.tostring(s1(i), 16)

i += 1

end while

doconv = s

end function

現在你要編碼什麼樣的就什麼樣的了。

呼叫 msgbox(fomartstring("我愛你mygirl"))

沒事了吧?

POJ 3275 兩種做法

題意 思路 1.floyd傳遞閉包 n 3 32 勉強卡過去吧 2.用鄰接表搞floyd 也是勉強卡過去 最後用n n 1 矩陣中為1的個數就ok了 傳遞閉包 by siriusrem include include include using namespace std bitset 1005 m...

POJ 3275 兩種做法

題意 思路 1.floyd傳遞閉包 n 3 32 勉強卡過去吧 2.用鄰接表搞floyd 也是勉強卡過去 最後用n n 1 矩陣中為1的個數就ok了 傳遞閉包 by siriusrem include include include using namespace std bitset 1005 m...

類似Google搜尋提示的兩種做法

做了個簡單的搜尋提示程式,類似google之類的搜尋提示,就是輸入乙個內容時,會把開頭對得上的內容顯示出來。下面可以測試看看 呵呵,這裡沒有顯示有多少條結果,當然也要做到統計也是可以的。這裡只做簡單的顯示。下面就說說兩種做法。第一種,是在使用者輸入提示資訊的時候,把使用者輸入的資訊跟應用中存的資料進...