phpでの文字化け解消方法

このQ&Aのポイント
  • php.iniファイルの設定により、文字化け解消を行う方法について説明します。
  • mbstringモジュールを使用して、文字コードの変換を行うことができます。
  • SJISを使いたい場合、php.iniの設定を確認し、適切な文字コードを指定してください。
回答を見る
  • ベストアンサー

phpでの書き出しでの文字化け解消について

お世話になります。 SJISを使いたく、php.iniを次のように設定しましたが、まったく文字が読めない状態で書き出されてしまいます。問題点をお教えいただけないでしょうか。 default_charset="Shift_JIS" mbstring.language=Japanese mbstring.internal_encoding=EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation=On mbstring.detect_order=auto また、内部円コーディングのmbstring.internal_encoding=EUC-JP はこれでよいのでしょうか。SJISを使うなら、SJISのほうがよいのでしょうか。 どなたか、お助けいただけないでしょうか。 どうか、よろしくお願いいたします。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

> まったく文字が読めない状態で書き出されてしまいます。 何が、どこにですか? PHPのスクリプトはどんな内容ですか?どの文字コードを使っていますか? データベースと連携していますか?連携している場合、テーブルの中身の文字コードは何を使っていますか?

kisoyasa
質問者

お礼

さっそくのご回答、感謝しております。 具体的な質問でなく、申し訳ありませんでした。 たとえば次が送り側です。 <FORM ACTION="uke.php" METHOD="post"> <INPUT TYPE="text" NAME="a"> <BR> <INPUT TYPE="submit" VALUE="送信"> </FORM> 次が受け側です。 <?php print $_POST["a"]; ?> 特にデータベースを使用せず、ソース等すべてSJISで 記述しています。 どうか、よろしくお願いいたします。

kisoyasa
質問者

補足

書き忘れてしまいました。申し訳ありません。 送り側のテキストボックスに、日本語の たとえば「あ」と入力して送信すると、 受け側ではブラウザがエンコードをシフトJISで表示する のですが文字化けしてしまいます。 たびたび、すみません。 どうか、よろしくお願いいたします。

関連するQ&A

  • phpで文字化け(php.ini)

    phpスプリクトはshift-jisで、文字化けしたためphp.iniをいじってみました。しかしどうやっても一定の漢字が文字化けしてしまいます。(「貼る」等…) 設定した箇所は下記の通りです(色々なサイトを回って調べた結果このような設定にしました) PHPのバージョンは4.4.1です。 default_charset = "Shift-JIS" mbstring.language = Japanese mbstring.internal_encoding = SJIS mbstring.http_input = auto mbstring.http_output = pass mbstring.encoding_translation = Off mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 0

    • ベストアンサー
    • PHP
  • PHP5.1 + APACHE2 + PostgrSQL8.1 + Eclipse3.2で全角文字の文字化けが

    お世話になります。PHP暦5日その内3日はこの問題で悩んでいます。 EUCとSJISが混在していることが原因だと思うのですが、 その先が進みません。 過去ログなどを読み、EUCに統一することが望ましいことが分かり、 そのつもりで挑戦しているのですがダメダメ君です。 現状では、 PostgrSQLから読み出したデータはEUCで PHP内でprintやechoなどで文字を出力するとSJISとなります。 文字化けを解決する方法お願いします。 ちなみにphp.iniはこんな感じです。 php.ini -------------------------------- default_charset = EUC-JP extension=php_mbstring.dll 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

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

    はじめまして、phpについて質問があります。 最近、PHP入門の本を買ってphpインストールをして、成功しました。 しかし、プログラムで「Hello」など英語は表示できるんですが、「こんにちは、世界!」など日本語で表示させようすると「??????A??E?I」となって文字化けします。 いろいろと調べましたが、どのようにすればいいか分からないまま2週間過ぎました。どなたか教えてくださいお願いします。 以下設定情報です↓ XP Apache2.059 PHP5.2.1 php.ini 447:default_charset=EUC-JP 1165:mbstring.language=Japanese 1170:mbstring.internal_encoding=EUC=JP 1173:mbstring.http_input = auto 1177:mbstring.http_output = EUC-JP 1184:mbstring.encoding_translation = On 1188:mbstring.detect_order = auto 1192:mbstring.substitute_character = none;

    • ベストアンサー
    • PHP
  • PHP 入力値 文字化け

    phpでFormで入力した値(日本語)が文字化けしてしまいます。 環境は WinXp pro apache2.0.59 php 4.4.7 php.iniのおもな設定ですが、 mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; ブラウザからすべてShiftJisで入力されているのですが、 それがうまく EUC-JPに内部エンコードされていません。 mb_convert_encording($str,"EUC-JP","auto")をスクリプト内で 記述するとうまく表示されますが、なんとか設定で文字化けしないよう にできないでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • 文字化けの原因を教えてください。

    WindowsでスクリプトをEUCで保存し、シフトJISでブラウザへ出力ときの 設定として以下のようにphp.iniを設定しています。 ~php.ini~ output_buffering = On output_handler = mb_output_handler magic_quotes_gpc = Off default_charset = Shift_JIS extension_dir = C:/php/ext extension=php_mbstring.dll mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none ~php.ini~ mb_detect_encodingでDBから取得した値の文字コードは、SJISでした。 mb_convert_encoding($dbdata,"EUC-JP","SJIS")で正しく表示されます。 iniファイルの設定のみで正しく表示するにはどのように設定するのがいいのでしょうか?それとも、このような文字コード変換は必須なのでしょうか? よろしくお願いします。 [PHP使用環境] PHP=5.1.6 OS=Windows2000 PRO webserver=apatch2.0 [DB環境(リモートサーバ)] DB=MS SQL Server2000 OS=Windows2003 server R2

    • 締切済み
    • PHP
  • php.iniを変更したのにUFT-8が文字化け

    こんにちは。教えて下さい。 Movable TypeをUTF-8で運営しようと思いましたが、使用中のサーバーのphpの文字コードがEUC-JPでした。 サーバーに問い合わせたところ、php.iniを編集するだけで文字コード変更できます、とのこと。 そこで、php.iniの mbstring.language = Japanese mbstring.encoding_translation = On mbstring.http_input = auto mbstring.http_output = EUC-JP mbstring.internal_encoding = EUC-JP mbstring.detect_order = auto mbstring.substitute_character = none; を mbstring.language = neutral mbstring.encoding_translation = On mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.internal_encoding = UTF-8 mbstring.detect_order = auto mbstring.substitute_character = none; にしてみました。 当方初心者で、php.iniは初めていじりました。 EUC-JPとあった箇所またはJapaneseとあった箇所を変更したのみです。 また、Movable Typeのmt-config.cgiで 文字コードをEUC-JPからUTF-8に変更。 Movable Typeの文字コード関連の変更はこのファイルのみですのでこれで大丈夫・・・。 そう思ったのですが、Movable Typeが文字化け・・・。 php.iniの設定が間違っているのでしょうか? 助けてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPの文字コード (php.iniの設定)

    php.iniを以下のように設定した場合について教えてください。 (PHPの参考書に載っていたWindows環境での設定例です) output_buffering = On output_handler = mb_output_handler default_charset = Shift_JIS extension=php_mbstring.dll mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = auto mbstring.script_encoding = EUC-JP 1. この設定は「PHPの記述されたファイルはEUC-JPで、 ブラウザに表示される時点でShift-JISに変換される」 ということですか? 2. PHPの参考書(PHP5対応)に、 「PHPアプリケーションを構築する場合、文字コードを Shift-JISにすると、PHPのバージョンやphp.iniの設定に よっては文字化けの原因になることがあるので、 Windows環境でもEUC-JPで保存することを強くお勧めする」 というようなことが書かれていました。 素人考えで、すべて同じ文字コード(EUC-JP)のほうが 楽なのではないかと思ったのですが、上記のように 設定するのはどういう理由からでしょうか? 3. CSSファイルやテンプレートファイル(Smarty)の 文字コードは、Shift-JISとEUC-JPのどちらで保存 すればいいのですか? 4. metaタグのcharsetはShift-JISであっていますか?

    • ベストアンサー
    • PHP
  • phpmyadminで文字化け

    こんにちは、 現在、php5,mysql4で構築しているのですが、 phpmyadminでテーブルに入れた日本語を見ると 文字化けを起こしており、 たぶん、default_charsetだと思うのですが、 何を設定すればよいのでしょうか? MYSQL4 UTF-8 PHP5 mbstring.detect_order auto mbstring.encoding_translation Off mbstring.func_overload 0 mbstring.http_input auto mbstring.http_output SJIS mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.script_encoding no value mbstring.substitute_character no value default_charset no value

    • 締切済み
    • PHP
  • PHPがローカル環境でのみ文字化けする

    PHPをApache2.0上でローカルテストすると、ブラウザ表示がどうにも文字化けしてしまいます。 EUCで組んだスクリプトをmb_convert_encodingでSJISに変換して出力しているのですが、本番用のサーバーではきちんと動作するのに、ローカル環境ではブラウザがEUCと認識してしまっているようで、文字化けが発生します。 99%php.iniかapacheの設定がおかしいのですが、どこがおかしいか見てはいただけないでしょうか。 php.iniのそれっぽい部分 mbstring.encoding_translation = Off mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = Off mbstring.detect_order = auto mbstring.substitute_character = none; ;mbstring.func_overload = 0 なお、Apacheのhttpd.confにAddDefaultCharset項目はありませんでした。 特殊要因としてApacheがXAMPPの中で制御されていることなのですが、php.iniはApacheのbinディレクトリ内のものを編集しています。 以上です。 どうかよろしくお願いします。 WinXP SP3 PHP 5.28 Apache 2.0 XAMPP 1.7.0 ※ApacheとXAMPPはPleiadesにてEclipseを導入したときについてきたもの。

    • ベストアンサー
    • PHP
  • UTF-8で文字化け

    いつもお世話になっております。 全てのファイルをEUC-JP で作成しております。 Googleマップを使用することになり、1ページだけ UTF-8 で出力したいと思います。 php.ini の設定は以下のようになっております。 -------------------------------------------------- default_charset EUC-JP mbstring.detect_order no value mbstring.encoding_translation Off mbstring.func_overload 0 mbstring.http_input pass mbstring.http_output EUC-JP mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.substitute_character no value -------------------------------------------------- Googleマップを出力するページで以下のようにしたのですが 文字化けが直りません。 map.php -------------------------------------------------- ini_set("default_charset", "UTF-8"); mb_internal_encoding("UTF-8"); 他に設定する箇所はありますでしょうか。 よろしくご教示お願いいたします。 <環境> PHP:4.3.1

    • ベストアンサー
    • PHP

専門家に質問してみよう