LoginSignup
1
1

More than 5 years have passed since last update.

Golangのurl.QueryEncodeは空白を+に変換する件

Posted at

表題の通り。しかし+に変換すると、よろしくないことが起きる場合あります。

たとえば、LINEのシェアボタンのURLにつけるパラメータは、+は空白に展開されずそのまま+となる。LINE様のドキュメントにもパーセントエンコーディングせよと書いてある。

CONTENT KEYの説明

パーセントエンコーディング(utf-8)したテキスト情報の値を指定します。

とりあえず、このような関数を作って、url.QueryEncode後に+を%20に変換することにした。

// %で始まらない単独の+を検出
var regexEscapeURIComponent = regexp.MustCompile(`([^%])(\+)`)

func QueryPercentEncode(str string) string {
    str = url.QueryEscape(str)
    return regexEscapeURIComponent.ReplaceAllString(str, "$1%20")
}
1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1