以下のURLリンクをクリックすると、新しいGoogleメールウィンドウが開きます。私が抱えている問題は、Googleがメール本文のすべてのプラス(+)記号を空白に置き換えることです。 +記号でのみ発生するようです。これを修正する方法に関する提案はありますか? (私はASP.NET Webページを作業しています)
https://mail.google.com/mail?view=cm&tf=0&[email protected]&su=some subject&body =こんにちは、こんにちは
(本文のメールでは、「こんにちは、こんにちは」が「こんにちは、こんにちは」と表示されます)
+
文字は、url =>で特別な意味を持ち、空白を意味します。 +
記号を使用する場合は、URLエンコードする必要があります。
body=Hi+there%2bHello+there
.NETでURLを適切に生成する方法の例を次に示します。
var uriBuilder = new UriBuilder("https://mail.google.com/mail");
var values = HttpUtility.ParseQueryString(string.Empty);
values["view"] = "cm";
values["tf"] = "0";
values["to"] = "[email protected]";
values["su"] = "some subject";
values["body"] = "Hi there+Hello there";
uriBuilder.Query = values.ToString();
Console.WriteLine(uriBuilder.ToString());
結果
本体にプラス(+)記号が必要ですか?2Bとしてエンコードする必要があります。
例: 試してみてください
RFC-3986で「非予約」として定義されている文字を除くすべての文字を常にパーセントエンコードする方が安全です。
未予約= ALPHA/DIGIT/"-"/"。"/"_"/"〜"
そのため、プラス文字とその他の特殊文字をパーセントエンコードします。
プラスの問題は、RFC-1866(HTML 2.0仕様)の8.2.1項によるものです。サブパラグラフ1.、「フォームのフィールド名と値はエスケープされます。スペース文字は「+」に置き換えられ、予約文字はエスケープされます」)。フォームデータをエンコードするこの方法は、後のHTML仕様にも記載されています。application/ x-www-form-urlencodedに関連する段落を探してください。
javaScript言語の場合は、encodeURIComponent関数を使用して特殊文字をエンコードします