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

解決


武田  2005-11-17 03:41:54  No: 18746

皆様いつもお世話になっております。
エディットボックスに検索語を入力してボタンをクリックして、検索語を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-17 04:14:05  No: 18747

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


co-op  2005-11-17 04:19:49  No: 18748

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


co-op  2005-11-17 04:27:02  No: 18749

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


大豆くん  2005-11-17 08:57:31  No: 18750

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

スペースとか考えると面倒でしょうから
きにせず全部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 11:12:44  No: 18751

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

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


武田  2005-11-18 01:55:24  No: 18752

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加