1. ホーム
  2. url

URLのエンコード/デコード

2023-08-21 09:34:28

質問

Go で URL 全体をエンコードおよびデコードするための推奨される方法は何ですか? 私が知っているのは url.QueryEscapeurl.QueryUnescape などがありますが、これらは私が探しているものとは全く違うようです。具体的には、私はJavaScriptの encodeURIComponentdecodeURIComponent .

ありがとうございます。

どのように解決するのですか?

URLのエンコーディングは、すべて net/url モジュールで行うことができます。 これは、URL の部分に対して個々のエンコーディング関数を分割するのではなく、URL 全体を構築させなければなりません。 ソースコードに目を通したところ、これは非常に優れた、標準に準拠した仕事だと思います。

以下はその例です ( 遊び場リンク )

package main

import (
    "fmt"
    "net/url"
)

func main() {

    Url, err := url.Parse("http://www.example.com")
    if err != nil {
        panic("boom")
    }

    Url.Path += "/some/path/or/other_with_funny_characters?_or_not/"
    parameters := url.Values{}
    parameters.Add("hello", "42")
    parameters.Add("hello", "54")
    parameters.Add("vegetable", "potato")
    Url.RawQuery = parameters.Encode()

    fmt.Printf("Encoded URL is %q\n", Url.String())
}

どのように印刷されるか

Encoded URL is "http://www.example.com/some/path/or/other_with_funny_characters%3F_or_not/?vegetable=potato&hello=42&hello=54"