人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpで検索時の文字化けに付いて

EUC-JPで作ったフォーム(methodはGETです)があり、
「炭」と入力して「検索」と書いたボタンを押して検索すると文字化けしません。
「?q=%C3%BA&submit=%B8%A1%BA%F7」は文字化けしません。

しかし、リターンキーで検索すると文字化けします。
「?q=%C3%BA&submit=」が文字化けすると言う事です。

また、「?q=%C3%BA&x=%ab」としても文字化けしませんが、
「?q=%C3%BA&x=1」だと文字化けします。

原因として考えられる事や、解決方法を教えてください。

よろしくお願いします。

文字数超過のため
phpの設定等、追加分をコメント欄に書きますので合わせてご覧下さい。

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:A1 BA C3 EUC-JP PHP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ftns
●35ポイント

変数名やフィールド名に日本語を使うと文字コード問題を

おこしやすくなりますからHTMLを、

----

<input type=submit name=ok value="検索">

----

とやってみて下さい。

◎質問者からの返答

ありがとうございます。

こちらは「"」を削除すると言う事でしょうか。


結論としてはリターンキーで検索した場合の文字化けは起さなくなったのですが、

やはり「?q=%C3%BA」とすると文字化けしてしまいます。


また、「変数名やフィールド名に日本語を使うと」とありますが

変数名やフィールド名に日本語は使っていないのですが...

フィールド名というのはname属性の事ですよね!?

やはりダメでした。

文字化けしてしまいます。

よろしくお願いします。


2 ● KeyKey
●35ポイント

「mbstring.encoding_translation」がonになっているので

送信時に自動で内部エンコーディングに変換されているはずです。

そして、「mbstring.http_input」が特に指定されていないため

「炭」1文字のような短い値だけでは文字コードが上手く検出できず、

変換に失敗しているのだと思います。

(検索ボタンをクリックした場合は「検索」という文字も送信されるため文字コードの検出に成功する)


「mbstring.encoding_translation」をfalseにしてしまって入力と出力のエンコードを自分でしてしまうのが確実です。

設定を変更できないなら古典的方法ですがhiddenで十分な長さの文字を渡してやれば良いと思います。

◎質問者からの返答

ありがとうございます。

今朝 hidden で全角スペースを入れる事により解決しました。

無理矢理ですが...


文字化けを起すのはIEだけだったのですが

ブラウザの問題もあるのでしょうか...!?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ