質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2427閲覧

旧字体をサブミットしたときの処理

chapp

総合スコア233

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/10/16 15:55

お世話になっております。

ウェブページ上に検索フォームを設けているページがあり、GETでデータを渡し、そのデータを基にデータベースを参照するというものを用意しており、その検索フォームには、入力し渡したデータを確認出来るように、データを渡した後、フォーム上に入力文字を表示するようしています。
(文字コードはEUC-JPで作成)

とここで質問なのですが、「廣瀬」と、旧字体を含む文字を渡すと、Firefoxでは

search.php?keyword=%D7%A2%C0%A5

となり、フォーム上には「?」と文字化けし、
対してIEでは、

search.php?keyword=%D7%A2%C0%A5&=%BB%E1%CC%BE%A1%A6%BC%D2%CC%BE%A4%AB%A4%E9%B8%A1%BA%F7

となり、文字化けしない状態となっています。

単純に「廣瀬」の部分は、%D7%A2%C0%A5だと思うのですが、文字化けし、
同じスクリプトにも拘らず、IEでは他の文字列が付加されるにも関わらず文字化けしません。

また、当然ですが「?」となってしまうと、データベース(MySQL)へセレクトするも、検索結果が返ってこない状況です。

と、このような状況ですが、文字化けしないための対策、そしてこれら現象(IEとFireFox)はどのようなものになっているのでしょうか?

ちなみに、データを渡したあとフォームに代入する際は、urldecode()を行い代入しています。

以上ですが、アドバイスのほど頂戴できれば幸いです。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

UrlEncode.netでそれぞれのURLをEUC-JPでデコードしてみました。
その結果

・Firefoxの場合
search.php?keyword=%D7%A2%C0%A5

search.php?keyword=廣瀬

・IEの場合
search.php?keyword=%D7%A2%C0%A5&=%BB%E1%CC%BE%A1%A6%BC%D2%CC%BE%A4%AB%A4%E9%B8%A1%BA%F7

search.php?keyword=廣瀬&=氏名・社名から検索

コードがないので動作の違いは分かりませんが、&はGETパラメータの区切りですのでひとまずは無視できます。
そうするとどちらもフォームから入力した文字は渡せているようです。

もうちょっと調べると以下のサイトが見付かりました。

PHP GET/POSTメソッドでの日本語の文字化け防止
フォームからPOSTで受け取ったデータが文字化けする

どうやらmb_detect_encoding()関数による誤検出が該当しそうです。
Firefoxの場合は誤検出したことで?になってしまい、IEの場合は「氏名・社名から検索」のおかげで正しく検出できていると思われます。
対策も上記リンクにありますのでご覧下さい。

投稿2015/10/18 11:58

shiena

総合スコア1825

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chapp

2015/10/19 04:34

shienaさん こんにちは。お忙しいところご親切なアドバイスをありがとう御座います。 ご指摘にあります、 search.php?keyword=廣瀬&=氏名・社名から検索 この、「氏名・社名から検索」この部分ですが、submitボタンだったので、name属性を入れずにいたのですが、name属性を入れることでFirefoxでもIEと同様に、正常に文字列を渡せるようになりました。 ありがたいコメント、そして色々と調べて頂いたようで感謝しています。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問