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 サイトの他の関連記事を参照してください。