• 締切済み

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

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などで変換しているのでしょうか? どなたかこの問題に対してご経験がある方、ご存知なかたがいらっしゃいましたら、 どうかご教授いただけますよう、よろしくお願い致します。

  • PHP
  • 回答数5
  • ありがとう数5

みんなの回答

  • 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

  • フォームの文字コードについて

    phpについて質問なんですが、<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">となっているページのフォームの内容の文字コードをphp側で確認すると、文字コードが「EUC-JP」となっています。 これはこういうものなのでしょうか? ご教授よろしくお願いします。

    • 締切済み
    • PHP
  • このタグの意味

    <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=euc-jp"> 自分のHOMEページ(サーバーYAHOO)に貼ってあるメタタグの一部ですが、 1.どういう内容のことを言っているのでしょうか?最後は文字コードのことだとはわかってます。 2.他のページにもメタタグを貼るときに、全くこのまま挿入していいのでしょうか? text/html の部分がそのままでいいのかがわかりません。 よろしくお願いします。

  • 更新を繰り返すと文字化けが起きてしまいます...

    お世話になります PHP4でHPを作成しています 文字化けに関して質問させて下さい PHPで作成したページの更新をすると 5回に1回の割合で文字化けが発生してしまいます EUC-JPで作成したPHPファイルを表示するので ファイルの先頭に  <? header(\"Content-Type: text/html;charset=EUC-JP\"); ?>  <html lang=\"ja\">  <head>  <meta http-equiv=\"content-type\" content=\"text/html; charset=EUC-JP\">  <meta http-equiv=\"content-style-type\" content=\"text/css\">  <meta http-equiv=\"content-script-type\" content=\"text/javascript\"> と指定してから 他の処理が実行されるようにしているのですが…。 何回か更新を繰り返すと文字化けを起こしてしまいます。 文字化けを起こした時にソースを表示すると 日本語が正しく見れる状態になっていたので シフトJISになってしまっているようで… 宜しくお願いします

    • 締切済み
    • PHP
  • ジオシティーズで作るのならeuc-jp?

    yahooジオシティーズでHPを作る際は、絶対に <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp"> ってやらないとうまくひょうじできないのでしょうか? <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp"> をしないでIEで表示しようとすると文字化けしてしまいます。

    • ベストアンサー
    • HTML
  • CGI.pmのstart_htmlで思い通りのMETAタグを出せない

    CGI.pmのstart_html()を使用してMETAタグを出力しようとしているのですが、思うように出力できません。 具体的には次の文字列と全く同じものを出力しようとしています。 <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> いろいろやってみたのですが、どれも微妙にこれとは違うのです。 どなたか教えてください・・・。 今のところ、これに最も近かったのは、 print($q->start_html(-head => $q->meta({"-http-equiv" => "Content-Type", -content => "text/html; charset=EUC-JP"}))); で、これの出力(METAタグ部分)は、 <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> でした。 お尻にスペース1個とスラッシュが付加されてしまいます・・・

    • ベストアンサー
    • Perl
  • フォームで送った文字がおかしくなる

     フォームから文字を記入して、送信ボタンを押すと次のページでその文字が表示されるという初歩的なプログラムをつくっています。しかし、フォームからPOSTでデータを送る場合、ある特定の一文字の漢字だけを記入して送信ボタンを押すと正常に表示されません。 例えば、「卒業」だと正常に表示されるのに「卒」だと「'」になってしまい、他にも「文」や「動」を一文字だけ記入すると、何も表示されません。ひらがなやカタカナ、複数文字の場合は全て正常です。原因が分からなくて困っています。 a.php (入力フォーム) <HTML> <HEAD> <TITLE>テキスト送信のテスト </TITLE> <META http-equiv="Content-Type" content="text/html; charset=EUC_JP"> </HEAD> <BODY> <FORM method="POST" action="view.php"> 入力してください: <INPUT type="text" name="name"> <BR> <INPUT type="submit" value="送信"> </FORM> </BODY> </HTML> view.php (表示するphpファイル) <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=EUC_JP"> <META http-equiv="Content-Style-Type" content="text/css"> </HEAD> <BODY> <?php print $_POST["name"]; ?> </BODY> </HTML> どこか間違いがあるでしょうか? a.phpとview.phpは両方とも日本語(EUC)改行=LFで保存しています。 phpのバージョンは5.1.1です。よろしくお願いします。

    • ベストアンサー
    • PHP
  • HTML・PHPの文字化け

    こんにちは。 PHPとMySQLを使ってショッピングカートを作ろうと思ったのですが、しょっぱなから躓いてしまいました・・・。 index.htmlでメタを <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> とeuc-jpにしたのですが、サーバーにアップすると文字化けしてしまいます。 表示のエンコードで確認するとシフトーJisになっています。eucにするとちゃんと表示されるのですが、更新するとやはり文字化けします。PHP・MySQLがeucですので、困っています。 どうにか対処方法はないでしょうか?ご教授をよろしくお願いします。

    • ベストアンサー
    • HTML
  • 文字コードのメタタグ

    今までは、問題なく表示されていたのですが急に、メタタグの <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> を入れると、逆に文字化けするようになりました…。 色々と試してみたのですが、メタタグを入れない時と、 <meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp"> の時だけ正常に表示されます…。 HTMLを編集するソフトの関係で、 シフトJISじゃないと都合が悪いようなので、すごく困っています…。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • meta要素の意味

    は何でしょうか? <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> を置かない場合の不都合は何でしょうか? これらをおく意味は何でしょうか?

    • ベストアンサー
    • HTML
  • 文字化けについて

    ホームページの文字が化けてしまいます。 特に、一番上のタイトル部分が化けます。 <meta http-equiv="Content-Type" Content="text/html; charset=euc-jp"> をいれても化けます。何が原因なんでしょうか?

専門家に質問してみよう