近年、インターネット業界の継続的な発展と普及に伴い、プログラミング言語の重要性がますます高まっています。多くのプログラミング言語の中でも、Golang は高速、効率的、安全なパフォーマンス上の利点により開発者に好まれています。
Golang は効率的なパフォーマンスを備えていますが、さまざまな問題や課題に直面することもあります。よくある問題の 1 つは、Golang のエスケープ文字、特にエスケープ文字「%」です。
Golang では、エスケープ文字 "%" を使用する必要がある場合、それを 2 回繰り返す必要があります (つまり "%%")。これは、Golang ではパーセント記号 "%" 自体がa エスケープ文字。したがって、Golang がパーセント記号「%」を含む文字列を処理する場合、それを書式文字列として扱い、それに続くパラメータを書式パラメータとして解析します。
たとえば、Golang で文字列「10%」を出力する必要がある場合は、「fmt.Printf("10%%")」と記述する必要があります。ここで、最初のパーセント記号「%」はエスケープ文字を表し、2 番目のパーセント記号「%」は出力される実際のパーセント記号を表します。
「fmt.Printf("10%")」を直接記述すると、Golang は出力をフォーマットしたいと判断し、出力用に次のパラメーターを探すため、間違った結果が表示されます。これは、Golang がパーセント記号「%」以降の文字を書式設定された文字列の一部として解析し、パーセント記号自体を正しく処理しないためです。
この問題と同様に、URL をエンコードする際のパーセント記号の問題という一般的なエラーがあります。 HTTP リクエストでは、URL 内のパーセント記号は一般にエスケープ文字を表し、一部の特殊文字またはバイトを特別にエンコードされた文字列に変換します。たとえば、 はスペースを表し、: はコロンを表します。
Golang では、URL エンコード時にパーセント記号の問題も発生します。エンコードに Golang 独自の URL エンコード機能を使用する場合は、パーセント記号のエスケープにも注意する必要があります。たとえば、「net/url」の Encode 関数を使用して、Golang で文字列をエンコードします。
import "net/url" encodeStr := url.QueryEscape("http://www.baidu.com/?query=测试&name=百度") fmt.Println(encodeStr) // 输出:http%3A%2F%2Fwww.baidu.com%2F%3Fquery%3D%E6%B5%8B%E8%AF%95%26name%3D%E7%99%BE%E5%BA%A6
ご覧のとおり、Golang はパラメータ内のすべての特殊文字をエスケープし、パーセント数値を使用してエンコードします。
ただし、前述のパーセント記号「%」などのカスタム エスケープ文字を導入する場合、Golang ではデコード エラーが発生します。例えば、以下のコードはエラーとなります:
import "net/url" encodeStr := url.QueryEscape("http://www.baidu.com/?query=测试&name=10%") fmt.Println(encodeStr) // 输出:http%3A%2F%2Fwww.baidu.com%2F%3Fquery%3D%E6%B5%8B%E8%AF%95%26name%3D10
ご覧のとおり、エンコード結果の「10%」のうち「10」だけが残っており、デコード中に文字が失われ、プログラムが停止してしまいます。 ~ エラーが発生しました。
この状況の解決策も非常に簡単で、エスケープする必要がある文字を他の文字に置き換えるだけです。たとえば、パーセント記号「%」を「%」(パーセント記号の URL エンコード) に置き換えます。
import "net/url" import "strings" encodeStr := url.QueryEscape(strings.Replace("http://www.baidu.com/?query=测试&name=10%", "%", "%25", -1)) fmt.Println(encodeStr) // 输出:http%3A%2F%2Fwww.baidu.com%2F%3Fquery%3D%E6%B5%8B%E8%AF%95%26name%3D10%25
このようにして、エンコード結果は正しくデコードされます。
一般に、Golang のエスケープ文字「%」には特別な注意が必要で、正しく使用するには 2 回繰り返す必要があります。 URL をエンコードするときに、エスケープにパーセント記号を使用する必要がある場合は、デコード エラーを避けるために特別な処理が必要です。この方法によってのみ、Golang を最大限に活用し、予期しないエラーを回避し、コードをより堅牢かつ効率的にすることができます。
以上がgolangで%をエスケープする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。