1. ホーム
  2. asp.net

[解決済み] プラス(+)記号をURLでエンコードする方法

2022-11-14 18:05:55

質問

以下のURLのリンクは、新しいGoogleメールのウィンドウを開きます。 問題は、Google がメール本文のプラス (+) 記号をすべて空白に置き換えてしまうことです。 この現象は + という記号にのみ起こるようです。 どうしたら改善されますか? (ASP.NETのWebページで作業しています。)

https://mail.google.com/mail?view=cm&tf=0&[email protected]&su=some subject&body=こんにちは+こんにちは

(本文メールでは、"こんにちは+こんにちは"は、"こんにちはこんにちは"と表示されます)

どのように解決するのですか?

この + 文字は、URL => において特別な意味を持ちます。 . もし、リテラル + 記号を使いたい場合は、それを URL エンコードして %2b :

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());

結果

https://mail.google.com:443/mail?view=cm&tf=0&to=someemail%40somedomain.com&su=some+subject&body=Hi+there%2bHello+there