- ベストアンサー
Rubyでメタ検索プログラムを見よう見まねで書いていますが、結果がバイナリ文字列で表示されます。
Rubyで下記のようなプログラムを書いています。ある検索サイトに対してメタサーチ的なものを実現したいと思い、見よう見まねで作っています。問題は結果が出るものの、日本語で本来出るべき結果部分がバイナリ文字列で表示されます。例えば、?216?241?227?303?201o?202?277といった感じです。おそらく初歩的な質問になってしまうと思いますが、教えていただけると助かります #!/usr/bin/ruby require "socket" require "cgi" c = CGI.new text = c["t"] s = TCPSocket.new("www.xxx.com", 80) s.write "GET /xxx/index.php?word_in=xxx HTTP/1.0?r?n?r?n" print "Content-Type: text/html?n?n" result=s.read.split(/?<li?>/) p result[1] print "<br>" print "</body></html>"
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> p result[1] p メソッドで出力しているからです。 putsなりprintなりを使えば多分大丈夫。
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
Ruby,PHP共に素人です。 環境 Ruby 1.8.1 (C:\Environment\Ruby\v1.8.1\bin\ruby.exe,PATH等は通してある) ANHTTPD ドキュメントルート C:\ANHTTPD 配置したファイル C:\ANHTTPD\Q3197179.cgi C:\ANHTTPD\hogehogefugafuga.html 文字コード Q3197179.cgi(UTF-8N) hogehogefugafuga.html(UTF-8) ソースコード ==========Q3197179.cgi=========== #!C:\Environment\Ruby\v1.8.1\bin\ruby.exe require "socket" require "cgi" c = CGI.new s = TCPSocket.new("localhost", 80) s.write "GET /hogehogefugafuga.html HTTP/1.0\n\n" result=s.read.split(/\<li\>/) print "Content-Type: text/html;charset=UTF-8\n\n" print result[1] print "<br>" print "</body></html>" =========================hogehogefugafuga.html====== <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>Q3197179 テスト1</title> </head> <body> <ul> <li>あ</li> <li>い</li> <li>う</li> <li>え</li> </ul> </body> </html> ======ブラウザで http://localhost/Q3197179.cgi にアクセスした結果 ======(注:Windows XPのコマンドプロンプトはShift_JISで表示するため化ける)====== あ</li> <br></body></html> ================= ということでとりあえず異常ありません。(いろいろいじったけど) 気になる点は・・・ 1.rubyを使わず直接ブラウザで http://www.xxx.com/xxx/index.php?word_in=xxx にアクセスするとどうなるか?(エンコーディングも確認) 2.もしクエリに日本語が含まれている場合、どのようにエンコードされるか?
お礼
ありがとうございます。putsで解決できましたが、今後の参考にさせていただきます。
お礼
ありがとうございます。putsで難なく解決しました。助かりました。