C# Express で、webbrowser オブジェクトを使用して自作 cgi を呼び出すプログラムに挑戦中です。 具体的には、「山田」で検索したい時、 ”hoge.cgi&q=%BB%B3%C5%C4” という文字列を生成し、これを webbrowser に食わせます。このクエリを生成する部分でハマりました。


「山田」→ EUC変換 → 16進数表記

により、「山田」から「%BB%B3%C5%C4」は生成できました。その後、stHexString に代入し、

// URL生成。
stGotoURL = @”http://hoge.hoge/hoge.cgi?query=” + stHexString;

// 新しい URL へ移動する。
System.UriBuilder oUriBuilder = new System.UriBuilder(stGotoURL);
System.Uri oUri = oUriBuilder.Uri;
webBrowser1.Url = this.oUri;

で実行してみると、実際に与えられた文字列は「http://hoge.hoge/hoge.cgi?%25BB%25B3%25C5%25C4」になっています。% の部分を System.Uri がどうも %25 に変換してくれているようなのです。 どなたかこの System.Uri の余計なお世話な変換を抑制する方法を御存知ではないでしょうか?

System.Uri コンストラクタの第二引数にtrueは使えないそうです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/02/17 10:13:27
  • 終了:--

回答(2件)

id:ohmix1 No.1

ohmix1回答回数235ベストアンサー獲得回数142006/02/17 11:21:43

ポイント70pt

http://www.hatena.ne.jp/1140138807#

人力検索はてな - C# Express で、webbrowser オブジェクトを使用して自作 cgi を呼び出すプログラムに挑戦中です。 具体的には、「山田」で検索したい時、 ”hoge.cgi&q=%BB%B3%C5%C4” と..

>「山田」→ EUC変換 → 16進数表記


「山田」→ EUC変換


した文字列をそのまま与えればよいのでは?

id:junchan

ご回答ありがとうございます。

「山田」→EUC変換バイト配列→EUC変換String

の変換を行い、実際に試してみましたがこの方法ではうまく動作しないようです。

URLとして使用できない文字列の場合、自動的にURLエンコードする動作を期待してたのですがうまくいかないものですね。

2006/02/20 01:56:00
id:ma-kanoh No.2

ma-kanoh回答回数155ベストアンサー獲得回数42006/02/20 23:21:40

ポイント70pt

http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...

MSDN ライブラリ サイト移行に関する重要なお知らせ

それ以前に、


System.Uri oUri = new Uri(stGotoURL);

webBrowser1.Url = this.oUri;


とやればいいだけなのでは。

だって「Urlエンコード」は終わってるわけですから、わざわざUriBuilderクラスに変換する必要がない気がしますが。


どうでしょうか。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません