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