• 締切済み

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

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

  • PHP
  • 回答数2
  • ありがとう数1

みんなの回答

  • yosakun
  • ベストアンサー率30% (3/10)
回答No.2

意味合いがよく分からないのですけど UTFで作ったhtmlのフォームから送信しているのに phpへ送ると文字コードがEUCになってるということでしょうか? php.iniの [mbstring] mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = EUC-JP mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none このあたりのことかもしれませんね。 内部エンコーディングがEUCだからじゃないですか?

回答No.1

PHPにおける文字コードの判別は色々な設定や送信内容で異なると思います。 どのような文字列を送信したか どのようなdetect_orderの設定になっているか この辺で文字コードの判別が変わってくると思います。

sweet10d
質問者

お礼

ありがとうございます。 もう少し、調べてみます。

関連するQ&A

  • HTML文字コード

    こんにちは。 文字コードのお話です。 PHPでテンプレートを呼び出して表示するのですが、UTF-8で指定しているのに、Shift-Jisで出力されている様子です。 HTMLのmetaタグで宣言しているのに、HTMLファイルだけがS-JISです。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> PHP側ではUTF-8を指定していて、そのページではきれいに表示されている文字と、文字化けしている文字がごちゃごちゃです。 htaccessの設定という可能性もあるでしょうか? HTMLに関連する問題だと思うのですが、ご存じの方いらっしゃいましたらご教授お願いします。。

    • 締切済み
    • PHP
  • フォームで送った文字がおかしくなる

     フォームから文字を記入して、送信ボタンを押すと次のページでその文字が表示されるという初歩的なプログラムをつくっています。しかし、フォームから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
  • 携帯から日本語をフォーム送信→展開に失敗?

    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
  • 文字コード変更による、文字化け・レイアウト崩れ

    文字コードをShift-jisからEUC-JPに変更したいのですが、 HTML・CSSに処理を施したら文字・レイアウトが大幅に崩れてしまいました。 以下のように変更したのですがやり方に間違いはないでしょうか? [HTML] <meta http-equiv="Content-Type" content="text/html; charset=Shift-jis"> ↓↓ <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> [CSS] @charset "shift_jis"; ↓↓ @charset "euc-jp"; また、ブラウザの表示⇒エンコードで(Shift_jis)を選択すると今までどおり正常に表示されます。(HTMLとCSSにはeuc-jpの記述にも関わらずです) これは文字コード変更したと思い込んでしまっているのでしょうか? 解決策お願いします。 あまり知識がありませんので、分かり易く教えていただけるとありがたいです。 ちなみにエディタはHTML Project2を使用しています。

  • 文字コード指定について

    中国の無料HPスペースにPHPをアップロードしてテストしていますが、文字コードでどうしても引っかかります。 利用しているサイトはここ http://51j.cn/ PHPファイル中にヘッダに <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=EUC-JP"> と指定しているにもかかわらず、ブラウザで開くと「簡体字中国語」が指定されてしまいます。 どうにかEUC-JP にしたいのですが、何か方法はあるでしょうか。

    • ベストアンサー
    • PHP
  • フォーム検索先の文字コードが自動的にEUC-JPに

    タイトルの通りですが、フォーム検索先の文字コードが自動的にEUC-JPになってしまって困っています。 最終的には、フォームの検索先をUTF-8の文字コードを指定して開きたいです。 UTF-8でphpファイルを作成しました。内容は下記のものです。 (おそらくphpは問題ないと思いますが、一応リンクを載せます) 2つの検索フォームのリーベンシュタイン距離を求める http://okwave.jp/qa/q7398842.html 上記のPHPにアクセスするように、FC2ブログのプラグイン(HTML編集にて)で、下記のようにフォームアクション先を設置しています。 (仮にここでは2つの検索フォームに名前を入れるものとします) <form name="formleven" method="post" form action = "http://〇〇.〇〇.jp/php/formleven.php" target="_blank" style="margin:0;padding:0;" onsubmit="return false;" accept-charset="utf-8"> 名前1:<input type="text" name="nm"> と 名前2:<input type="text" name="nm2">    <input type="submit" name="exec" value="検索" onclick="document.charset='utf-8'; document.formleven.submit();" /> </form> 仮に 名前1に「あō å 1g」 名前2に「いš ë ā 」 と入力します。(日本語、アクセント文字、ローマ字などの混合文字でも対応できるように) 本来ならば、『(名前1)と(名前2)は◯%マッチ』と表示されるはずなのですが、 これで検索すると、検索先の別ウィンドウが自動的にEUC-JPの文字コードで読み込まれてしまい、下記のように文字化けします。 ��� 奪 鐚�鐔� �� ��邸 谷 � �� 1鐚� ������(6) ブラウザの文字コードを「UTF-8」に戻すと下記のように正常に表示されます。 あō å 1g と いš ë ā は 1% マッチ(6) ちなみにローカルサーバーや有料サーバーで実験した際には、勝手にEUC-JPの文字コードが出力先になったりはしませんでした。(もちろんPHPはUTF-8で作成し、EUC-JPは使っていません。) またフォームの「accept-charset="utf-8"」の部分を抜くと、検索フォームの入力文字は正常に表示される(出力先が勝手にEUC-JPにされるため)のですが、「と」「は」「%マッチ」のUTF-8で書かれたPHPファイルの文字列が文字化けします。 どうやらFC2自体がEUC-JPなようで、FC2のプラグイン(HTML編集)経由でなってしまうようです。 そこでFC2のテンプレートの冒頭のメタ部分を <?xml version="1.0" encoding="EUC-JP"?> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp" /> ↓ <?xml version="1.0" encoding="UTF-8"?> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> と書き換えてもみたのですが、やはり結果は同じように勝手に検索出力先がEUC-JPにされてしまいます。 HTMLフォームのmethod="post"の部分をmethod="get"に書き換えると、出力先は問題なくUTF-8で表示され文字化けは起こらなくなりますが、検索フォームに入力した文字列のリーベンシュタイン距離の計算ができなくなります。数値が全て「0」になってしまいます。 (おそらく出力先はUTF-8なのですが、入力文字がEUC-JPになって文字化けして、PHPへと受け渡されるので計算できないのだと思います。) これらのことから察するに、FC2プラグイン(HTML)に設置した検索フォームの方(あるいはテンプレート?)に問題があると思うのですが、 <form name="formleven" method="post" form action = "http://〇〇.〇〇.jp/php/formleven.php" target="_blank" style="margin:0;padding:0;" onsubmit="return false;" accept-charset="utf-8"> 名前1:<input type="text" name="nm"> と 名前2:<input type="text" name="nm2">    <input type="submit" name="exec" value="検索" onclick="document.charset='utf-8'; document.formleven.submit();" /> </form> これをどう修正すればいいでしょうか? 稚拙ながら恐縮ですが、ご存じの方がいらっしゃいましたら、ご指摘・ご教授のほどよろしくお願い申し上げます。

    • ベストアンサー
    • HTML
  • 「塙」と言う文字が文字化けしてしまう

    表題の件で質問させて下さい。 PHPで文字コードをEUCにしたwebアプリケーションを構築しております。 特に何の問題もなく動いていたと思っていたのですが、フォーム等で「塙」と言う文字を入力して、submitした値を表示させると文字化けしてしまいます。 これを表示させるには、どのような対処を行えば良いのでしょうか? いろいろと試してみた結果、 「塙あ」のように、後ろに全角文字が入るとキチンと文字化けせずに表示されるのは確認しました。 (「塙1」のように後ろに半角文字があると「?1」になってしまいます) どなたか対策をご存知の方、いらっしゃいましたらご教授お願いします。 下記の対策は行っています。 ・header("Content-type: text/html; charset=EUC-JP"); ・<meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> ・ファイルをEUC-JPで保存

    • ベストアンサー
    • PHP
  • 文字コードについて教えてください。

    ホームページを作成するときに指定する文字コードをどうしたらいいのか迷っています。 ウインドウズ環境でホームページを作る際、入力された文字は秀丸などの特別なソフトを使わなければ自動的にShift JISコードになると思うのですが、この場合、タグを <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS"> と指定するべきでしょうか?それとも、 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-2022-jp"> と指定するべきでしょうか? ISO-2022-JPで指定した場合、ブラウザが必ずしも自動判別してくれないこともあるのでしょうか? また、CGIスクリプトはShift JISで入力するとエラーを起こすことがあると聞いたことがあります。 ホームページを作成する場合には、常にISO-2022-JPかEUCの文字コードで作成するようにしたほうがいいのでしょうか? いろいろ検索して調べてみたのですが、どうもよくわかりません。宜しく御願いします。 なお、gooのホームページを閲覧するときも頻繁に文字化けしています(文字コードがEUCに指定されていないのはなぜでしょうか?)。

  • 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
  • 更新を繰り返すと文字化けが起きてしまいます...

    お世話になります 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

専門家に質問してみよう