アプリ版:「スタンプのみでお礼する」機能のリリースについて

CGI&PHP初心者です。
フォームのデータ送信とURLエンコードについて、お尋ねします。

method="GET" のフォームで、検索フォームをつくりたいとおもっています。
日本語も含めた検索語をフォーム送信したいと考えていますが、
送信の結果、エンコードされずにそのままブラウザのURL欄に入力した日本語が表示されてしまいます。
(ただ、メモ帳などにURLをコピーペーストするとURLエンコードがされているようです。)

googleでは検索結果のアドレス欄にURLエンコードされた文字列がでているが、
同じように検索結果のアドレス欄にはURLエンコードされた文字列をだしたい。
URLに日本語をださずにURLエンコードさせた文字列を表示させるには、
どうすればいいのでしょうか?

補足:できるかぎり検索処理が重くならないにしたいと思います。
    開発環境PHP&MySQL
    動作環境Chrome のバージョン 38.0

A 回答 (2件)

これはブラウザの機能です。


フォームで入力された文字は、URLエンコードされた状態でサーバーに送信され、サーバーはそれを元の文字列に戻して処理し、その結果を表示しますが、URL欄には
・firefoxは元の文字
・IEはエンコードされたもの
・Chromeはエンコードされたもの
・Operaは表示されない
・Safariは元の文字
 これは当然でしてURL欄には送信した時点のURLが表示され、それをどのように表示するかはブラウザ開発側のスタンスによります。
 URLエンコードされた文字よりは本来のキーワードが表示されるほうが便利だと思いますが???
 PATH_INFOを使用するWikiなどでは実感されるかと
ブラウザ - Wikipedia( http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9% … )
 どうせ、Ctrl + L → Ctrl + C でコピーすればよいし、firefoxならMaikeLinkアドオン使うし・・

※方法はあります。
 一旦、redirectするページを表示させてから、本来のページにリダイレクトさせる。その場合もブラウザの機能で元の文字列に返すことがあるかも
    • good
    • 0
この回答へのお礼

ありがとうございました。返事がおそくなり申し訳ありません。
とても参考になりました。

お礼日時:2014/10/31 08:51

PHPだと、


$mess1 = rawurlencode('下痢腹晋ちゃんまたも途中退陣');
が使えます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!