http://www.google.com/search?q=●●●←ここに♯記号を認識させたい
Q&A
上記は、Googleの検索コマンド?なんですが、
$"http://www.google.com/search?q={●●●}"
ってやってるんですが、変数●●●に例えば{C#あいうえお}とすると、
シャープ記号以降が完全に無視されます。
どうすればいいでしょうか?
0
Q&A
上記は、Googleの検索コマンド?なんですが、
$"http://www.google.com/search?q={●●●}"
ってやってるんですが、変数●●●に例えば{C#あいうえお}とすると、
シャープ記号以降が完全に無視されます。
どうすればいいでしょうか?
{C#あいうえお} を {C%23あいうえお} にするのは解決となりませんか?
@Mari23age
Questioner
うわ!されます!でも、いちいち面倒です……。@←みたいにエスケープできないんでしょうか?
ちゃんとエスケープ用のメソッドがあります.
var uriToSearch = new UriBuilder("https://www.google.com/search");
uriToSearch.Query = $"q={Uri.EscapeDataString("あいうえお#かきくけこ")}";
// あとはuriToSearch.ToString()とか使えばよい
手作業エスケープは大変だし漏れがあると危ないので,こういうのはBuilderに頼ります.
@Mari23age
Questioner
ありがとうございます!!!!!
@Mari23age
Questioner
うまく検索できるようになりました!が、
MessageBox.Show(uriToSearch.ToString());
ってやると、♯記号が混じると文字化けするんですが、なんででしょうか?
別に文字化けしててもいいんですけど、なんでだろうと思って。。。
@Verclene さん
Uri.EscapeDataString メソッドは半角空白をパーセントエンコーディング (%20) します。
一方、Google ではどうだか不明ですが、普通はクエリ文字列は application/x-www-form-urlencoded 形式(半角空白は + になる)にします。
なので、HttpUtility.UrlEncodeメソッドを使うのが良さそうです。