EditBoxの文字列をGoogleに渡して検索結果を表示するには?

解決


武田  2005-11-16 18:41:54  No: 18746  IP: 192.*.*.*

皆様いつもお世話になっております。
エディットボックスに検索語を入力してボタンをクリックして、検索語をGoogleに与えて結果を表示するにはどうしたらいいのでしょうか。表示はWebBrowserです。いまは次のように作って表示されたGoogleの画面に入力しています。(#スマートではないです)
検索エンジンについて探したのですが、各社エンコードの方法が違うとか難しいことを書いてあり理解できませんでした。とてつもなく難しいことなのかわかりません。
どうぞご指導いただけませんでしょうか。お願いいたします。m(_ _)m

procedure TForm1.Button1Click(Sender: TObject);
begin
    WebBrowser1.Navigate('http://www.google.co.jp/search?q');
end;

編集 削除
co-op  2005-11-16 19:14:05  No: 18747  IP: 192.*.*.*

日本語を「URLエンコード」すればよいです。
HTTPApp ユニットの HttpEncode, HttpDecode がそれですが、
Delphi6 パーソナルにあるかは分かりません。

編集 削除
co-op  2005-11-16 19:19:49  No: 18748  IP: 192.*.*.*

http://www.bousaid.que.jp/memo/php/urlencode.php
googleはUTF-8ですね。

編集 削除
co-op  2005-11-16 19:27:02  No: 18749  IP: 192.*.*.*

D6ならUTF8Encodeはあるらしいです
Edit1.Text:=HttpEncode(UTF8Encode('あ'));
無い場合はこちらを使用してみるのは如何でしょうか。
http://homepage3.nifty.com/m-and-i/tips/utftosjis.htm

編集 削除
大豆くん  2005-11-16 23:57:31  No: 18750  IP: 192.*.*.*

サーバーで自動認識してそうなので
文字コード関係なさそうですよ
  全角でいれてみて
どちらも同じ結果が表示されました。

スペースとか考えると面倒でしょうから
きにせず全部16進でわたしちゃえばいいかと


function searchText(s:string):string;
 var i:integer; r :string;
begin
  r :='';
  for i:=1 to length(s) do
  begin
    r:= r +'%'+ Format('%.2x',[byte(s[i])]) ;
  end;
  Result := r;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser1.Navigate('http://www.google.co.jp/search?q='
  +searchText(Edit1.Text));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  WebBrowser2.Navigate('http://www.google.co.jp/search?q='
  +searchText(AnsiToUtf8(Edit1.Text)));
end;

編集 削除
にしの  2005-11-17 02:12:44  No: 18751  IP: 192.*.*.*

Googleは、何度か仕様を変えています。
以前も、SJISで通っていたはずが、UTF-8のみ(ie,oeパラメータで若干対応可能)に変更されました。
# これで泣いたタブブラウザ利用者もいるはず

暗黙の了解で直接渡すよりも、UTF-8に直してからの方がよいです。
UTF-8は変更にならない、ということではありませんが、使えたり使えなかったりしたSJISのままよりはいいかと思います。

編集 削除
武田  2005-11-17 16:55:24  No: 18752  IP: 192.*.*.*

co-op 様、大豆くん様、にしの 様、ご教授有り難うございました。
各社違う規格だったり、変更したりしたようなことを書いてありますね。
そうすると、プログラムに固定のコードで組み込むより、設定で変更できるようにしなくてはなりませんね。
勉強になりました。お礼を申し上げます。m(_ _)m

編集 削除