人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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は使えないそうです。

●質問者: junchan
●カテゴリ:コンピュータ
✍キーワード:BB C# C5 CGI EUC
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ohmix1
●70ポイント

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

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

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


「山田」→ EUC変換


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

◎質問者からの返答

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

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

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

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


2 ● ma-kanoh
●70ポイント

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

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

それ以前に、


System.Uri oUri = new Uri(stGotoURL);

webBrowser1.Url = this.oUri;


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

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


どうでしょうか。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ