golang URLをエスケープする方法

PHPz
リリース: 2023-04-05 13:53:23
オリジナル
1975 人が閲覧しました

Golang では、URL エスケープは、URL 文字列を URL セーフな文字列に変換するプロセスです。 URL文字列は、文字、数字、記号などのさまざまな文字を組み合わせた文字列です。ただし、ネットワーク送信中に問題が発生しないように、HTTP URL を安全な文字列に変換する必要があるため、URL 文字列をエスケープする必要があります。

URL をエスケープするには 2 つの方法があります。1 つは予約文字をエスケープする方法、もう 1 つは非 ASCII 文字をエスケープする方法です。これらのエスケープ方法は両方とも、URL 文字列内の特殊文字によって引き起こされるエラーを回避するために使用されます。

予約文字のエスケープ

予約文字とは、スペース、縦棒、疑問符、パーセント記号など、URL 文字列内で特別な意味を持つ文字を指します。これらの文字を URL で使用する場合はエスケープする必要があります。

Golang では、URL エスケープには 2 つの方法が用意されています。1 つは net/url パッケージの Escape 関数を使用する方法、もう 1 つは EscapeString 関数を使用する方法です。 Escape 関数は URL 文字列内の特殊文字をエスケープするために使用され、EscapeString 関数は URL 文字列全体をエスケープするために使用されます。以下に例を示します。

package main

import (
    "fmt"
    "net/url"
)

func main() {
    urlString := "http://www.example.com/path with spaces"
    escapedString := url.QueryEscape(urlString)
    fmt.Println("Escaped string:", escapedString)
}
ログイン後にコピー

出力結果は次のとおりです。

Escaped string: http%3A%2F%2Fwww.example.com%2Fpath+with+spaces
ログイン後にコピー

ご覧のとおり、スペースは " " にエスケープされ、コロン、スラッシュ、ピリオドなどの文字は " " にエスケープされます。その他の文字 ASCII コード値の形式。

非 ASCII 文字のエスケープ

エスケープする必要がある予約文字に加えて、URL を使用する場合は非 ASCII 文字のエスケープにも注意する必要があります。非 ASCII 文字は、Unicode エンコード テーブル内の文字を指します。これらの文字は、%HH 形式に変換してエスケープする必要があります。HH は、Unicode エンコード テーブル内の文字の 16 進値を表します。

Golang では、非 ASCII 文字を URL エスケープするには、net/url パッケージの PathEscape 関数を使用する必要があります。サンプル コードは次のとおりです:

package main

import (
    "fmt"
    "net/url"
)

func main() {
    urlString := "http://www.example.com/你好"
    escapedString := url.PathEscape(urlString)
    fmt.Println("Escaped string:", escapedString)
}
ログイン後にコピー

出力結果は次のとおりです:

Escaped string: http://www.example.com/%E4%BD%A0%E5%A5%BD
ログイン後にコピー

Yes ご覧のとおり、非 ASCII 文字「hello」は hello という形式にエスケープされます。これは、Unicode エンコード テーブルにおけるこの文字の 16 進値です。

概要

Golang では、URL エスケープは非常に重要なスキルです。 URL 文字列内の予約文字と非 ASCII 文字をエスケープすることで、ネットワーク送信中に問題が発生しないことを保証できます。実際の開発では、URL エンコード エラーを減らすために、URL エスケープ ルールを深く理解する必要があります。

以上がgolang URLをエスケープする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!