• 締切済み

携帯から日本語をフォーム送信→展開に失敗?

docomo、AUの端末(全端末を試したわけではないのですが)では大丈夫で、 vodafoneの端末のみ、EUC-JP のhtmlからpostにて日本語を送信すると、 遷移後のページで送信されたものを表示しようとすると 「??」と、化けてしまっているのかそう表示されてしまいます。 ・PHPのバージョンは、4.3.10です。 ・1バイト文字ではOKでした ・メタタグ <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> を <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> に、 「htmlもphp(php自体の文字コードも同時に変えています)もどちらも変えてみる」 「htmlだけ変える」 「phpだけ変える」 の3パターンを試してみたのですが、どれも結果は同じでした。 web上を検索して出てきた、フォームのサンプル(ただしソースは無い) http://www.sokudoku.gr.jp/i/form.html を携帯に送って確認したのですが、このページでは文字化けは起こりませんでした。 なので、何かしらの解決方法はあるはずなのですが・・。 PHP側で、フォームから入力された文字を mb_convert_encodingなどで変換しているのでしょうか? どなたかこの問題に対してご経験がある方、ご存知なかたがいらっしゃいましたら、 どうかご教授いただけますよう、よろしくお願い致します。

みんなの回答

  • kuny2005
  • ベストアンサー率67% (21/31)
回答No.5

php.iniが原因が調べる方法としては、 php_info();か、以下のようなスクリプトを両方のサーバで実行しphp.iniの設定の違いを確認したらいいと思います。 echo ini_get('mbstring.encoding_translation')."<br>"; echo ini_get('mbstring.internal_encoding')."<br>"; echo ini_get('mbstring.http_output')."<br>"; echo ini_get('mbstring.script_encoding'); もし、違うようであれば、動作したサーバの設定をスクリプトに書き込む。 ini_set('mbstring.encoding_translation',NULL); ini_set('mbstring.internal_encoding',0); ini_set('mbstring.http_output','pass'); ini_set('mbstring.script_encoding',NULL); ↑例です。 php.iniの設定が原因であれば以上の様にし、動作しなかったサーバにアップロードして確認してみたら動作すると思います。

  • briant-jr
  • ベストアンサー率50% (5/10)
回答No.4

#1です。 提示していただいたコードで確認してみました。 実は私も602SHユーザだったのでちょうどよかったのです。 でもちょんと動いてますよ。このコードで。 ということは、ソースコードの中にSJISではないコードが紛れ込んでいるのでしょう。製作途中にSJISに気づいたということなので。これが有力な原因だと考えられます。一度コードを全てメモ帳などに退避して、全てのコードを入力しなおしてください。 たぶんシェルコマンドなどで一括変換などをなさっているのだと思いますが、それだと別の文字コードが紛れ込んでいる場合には対応できないので、一度全て打ち直すことをお勧めします。

pepusi92
質問者

お礼

もしやと思い、別の、 PHPが使えるサーバにアップしてみたところ、 正常に動いてしまいました・・。 php.iniの文字コード関係の書き方に問題がある、ということなのでしょうか。 しかし、自分でphp.iniを変更できる権限が無いので、 phpのファイル単体で指定できるのなら、 その方向を試したいのですが・・。

  • kuny2005
  • ベストアンサー率67% (21/31)
回答No.3

既に回答があるように、 モバイルコンテンツの文字コードはShift_JISで必要があります。 Shift_JISであれば基本、問題ないかと思います。 また、文字コードとは関係ないのですが、 > ボーダフォンには大きくわけてC型、P型、W型の3種類があります。 という回答がありますが、VodafoneにはC型、P型、W型、3G型、3GC型があり、 大きくわけるとC型、P型、3GC型となります。 その中のC型ですが、 フォームのmethodはgetのみしか使えませんので、注意が必要です。 (postはできません。)

pepusi92
質問者

お礼

端末の方は、 V602SH(P6型) V603T(P7型) でこの現象が起こることを確認しました。 shift-jisでも、だめだったのですよね・・。 ソースを、別の方の返答にアップしました。 お手数で申し訳ないのですが、 もしお時間がありましたら、確認いただけないでしょうか。 よろしくお願い致します。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

携帯は基本的にS-jis対応なので、文字コードをS-jisにしてください。 最近はEUCなどの対応をしている機種もありますが、基本はS-JISです。 EUCが見れるのならばそれは「たまたま」だと思ったほうがいいです。

  • briant-jr
  • ベストアンサー率50% (5/10)
回答No.1

まず、お聞きしたいのは携帯端末の型です。 ボーダフォンには大きくわけてC型、P型、W型の3種類があります。そのどれかによって大きく仕様が異なります。 ただ、1点ご質問内容からいえることは、基本的にケイタイ電話のブラウザはSJISで表示するようになっています。最近ではいろんなコードに対応している端末も出てきておりますが、SJISですべてのコードを記述するのがベターです。 もし可能であれば、ソースコードを提示していただけないでしょか?そうすればコチラでも実際に試すことが可能になります。

pepusi92
質問者

お礼

回答の方、有難うございます。 SJISの方なのですが、 製作中に携帯はSJISが基本ということを知り、 SJISもやってみたのですがだめだったのです・・。 その時のソースを書きます。 html側ソースです。 ------- <html> <head> <title>携帯テスト</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"></head> <body> <form action="php/test.php" method="post" name="form1"> <br> ニックネーム :<br> <input name="username" type="text" id="username" size="20" maxlength="30"> <br> <input type="submit" name="Submit" value="確認"> </form> </body> </html> ------- PHP側ソースです。 ------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title></title> </head> <body> <?php $username = $_POST['username']; print $username; exit; ?> </body> </html> ------- PHPのテキストファイル自体の改行コードは、 EUC、SJIS、両方変えてみてみましたが 結果は同じでした。 この現象を確認した端末は、 V602SH(P6型) V603T(P7型) です。 よろしくお願い致します。m( __ __ )m

関連するQ&A