URL編碼解碼字符串,互聯網無歧義傳輸,Go一招鮮吃遍天!

引言

在本文中,您將瞭解如何在Golang中對查詢字符串或路徑段進行URL編碼。URL編碼,也稱為百分比編碼,將包含

不可打印、保留或非ascii字符的字符串轉換為可以在internet上傳輸的普遍接受的格式

URL編碼的數據也稱為
application/x-www-form-urlencoded
MIME格式。

URL編碼解碼字符串,互聯網無歧義傳輸,Go一招鮮吃遍天!

編碼

Go的net/url包內有一個名為QueryEscape的內置方法來轉義/編碼一個字符串,這樣它就可以安全地放在URL查詢中。下面的示例演示如何在Golang -中對查詢字符串進行編碼。

<code>

package

main

import

(

"fmt"

"net/url"

)

func

main

()

{ query :=

"Hellö Wörld@Golang"

fmt.Println(url.QueryEscape(query)) }/<code>

輸出內容:

<code>Hell%C3%B6+W%C3%B6rld%40Golang/<code>

對多個查詢參數的編碼

如果希望同時對多個查詢參數進行編碼,則可以創建 url.Values 由查詢參數到值的映射組成,並使用url.Values.Encode()方法對所有查詢參數進行編碼。

下面是一個例子:

<code> 

package

main

import

(

"fmt"

"net/url"

)

func

main

()

{ params := url.Values{} params.Add(

"name"

,

"@Rajeev"

) params.Add(

"phone"

,

"+919999999999"

) fmt.Println(params.Encode()) }/<code>

輸出內容:

<code>

name

=

%40

Rajeev&phone=

%2

B919999999999/<code>

對URL路徑編碼

與QueryEscape一樣,Go中的net/url包也有另一個名為PathEscape()的函數,用於對字符串進行編碼,以便將其安全地放置在URL的路徑段中。

舉個栗子:

<code>

package

main

import

(

"fmt"

"net/url"

)

func

main

()

{ path :=

"path with?reserved+characters"

fmt.Println(url.PathEscape(path)) }/<code>

輸出內容:

<code>

path

%20

with

%3

Freserved+characters/<code>

通過編碼各個部分來構建完整的URL

最後,讓我們看一個完整的例子,在Golang中進行URL解析和編碼。

<code>

package

main

import

(

"fmt"

"net/url"

)

func

main

()

{ baseUrl, err := url.Parse(

"http://www.mywebsite.com"

)

if

err !=

nil

{ fmt.Println(

"Malformed URL: "

, err.Error())

return

} baseUrl.Path +=

"path with?reserved characters"

params := url.Values{} params.Add(

"q"

,

"Hello World"

) params.Add(

"u"

,

"@rajeev"

) baseUrl.RawQuery = params.Encode() fmt.Printf(

"Encoded URL is %q\n"

, baseUrl.String()) }/<code>

輸出內容:

<code>Encoded URL is 

"http://www.mywebsite.com/path%20with%3Freserved%20characters?q=Hello+World&u=%40rajeev"

/<code>

寫在最後

從部分到整體,構建起來整個功能,這是拆解的用法。到更復雜的場景下用起來吧。

Happy coding :)


分享到:


相關文章: