• ベストアンサー

PHPでセッション導入後に初めて見る文字化け

PHPの文字化けについて質問させてください。 約5年間程動かしているプログラムで、今まで全く文字化けしていなかったのが、突然文字化けが始まりました。セッション関数を入れてから、起こり始めたため、恐らく原因はセッションだと思います。 プログラムコードはSJISで記載し、日本語文字が文字化けしたりしなかったりと不定期に文字化けします。その形式も今まで私は見かけたことが無い形式で、SJIS特有の文字化けではないようで、例えばですが、 ^uoCLO5Zbg u[IuVfBA u[S[hXg[ J[lA sXY u[IuVfBA のように日本語が全て何かのコードのようになっています。 HTMLフォームに入力して渡してきた変数部分が文字化けしており、PHPに直接記載している日本語は文字化けしていないようです。 毎回文字化けはせず、突然文字化けします。 PHPのバージョンは4.3.9です。 以上情報が少ないかもしれませんが、もし何か原因や解決のヒントが分かりましたら、ご教授いただければ幸いです。

noname#31558
noname#31558
  • PHP
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
回答No.2

>^uoCLO5Zbg u[IuVfBA u[S[hXg[ J[lA sXY u[IuVfBA 見たことないタイプの化け方です。 なので余り下記の回答には自信がありませんが、一般的に「たまに文字化け」の原因となることが多いのは、PHPによる自動変換です。 mbstring.http_input = auto を、 mbstring.http_input = SJIS にすると解決しませんか? (もしくは、mbstring.encoding_translation = Off にするか)

noname#31558
質問者

お礼

アドバイスありがとうございました。 ご指摘の通り、自動変換での不定期な文字化けのようです。 mbstring.http_inputをautoに設定して様子をみたいと思います。

その他の回答 (1)

  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.1

unicodeにエンコードされている様に思われます。 PHPをご使用の環境(サーバ)の設定で内部エンコーディングは具体的に何を設定されておりますか? php.ini定義ファイル,.htaccessファイル,実装コード いづれかで、内部エンコーディングの文字コードをShift_JISに定義してあげれば解決しそうな気がします。 (内部エンコーディングをShift_JIS指定で運用した経験が無い為に推測となります)

noname#31558
質問者

お礼

内部エンコードが原因だったようです。 mbstring.http_inputの部分を変更して様子を見たいと思います。 ありがとうございました。

noname#31558
質問者

補足

早速の回答ありがとうございます。 なるほどunicodeですか。 php.iniで日本語文字関係の設定を下記のようにしております。 mbstring.language = Japanese mbstring.internal_encoding = SJIS mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; もし何か分かりましたら、アドバイスいただければ幸いです。 よろしくお願いいたします。

関連するQ&A

  • phpのソースによって、文字化けしてしまいます

    お世話になっております。 PHPとMySQLを利用しております。php.iniでPHP 、my.cnfでMySQL、それぞれの文字コードを「日本語EUC」に設定し、問題なく動作しております。 ただ、PHPスクリプトのソースコードが日本語EUCでない場合、出力結果が???????のように文字化けしてしまいます。 PHPスクリプトのソースの文字コードが、日本語EUCであっても、シフトJISであっても文字化けしないようにするには、どのように設定したらよいでしょうか。 初心者であり、困っております。 どなたか、お助けいただくことはできますでしょうか。 どうか、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPで文字化けします

    PHPでリンク集を登録、表示するプログラムを考えています。 登録、削除などは出来るのですが、表示部分が文字化けします。 登録内容をcsvに保存して、PHPから読み込んで表示する仕組みなのですが、csvから読み込む部分以外は正常に表示されますが、csvから読み込んだ部分が文字化けします。 サーバーは共用なので、管理者に問い合わせた所、サーバの通常文字コードはUTF-8との事、.htaccess ファイルで EUCへの変換方法を教えてもらったので、試しましたが、csv内に登録した時点で、文字化けした状態で記録されているようで、PHPファイルをsjisにして試しても、EUCにして試しても結果が同じです。 フォームからcsvに登録する時の文字コードを設定したりはできないのでしょうか。 また、公開されているスクリプトで相互リンク登録が出来るようなプログラムをご存知であれば、お教えください。

    • 締切済み
    • PHP
  • phpとMysqlの文字化け

    何度もすみません。 phpからinsertするときとphpmyadminから直接挿入するときどちらも文字化けを起こします。 phpは4.4.9でmysqlは5です。 myadminのMySQL 接続の照合順序はsjisにしております。 照合順序と保存される文字コードは違うのでしょうか。 phpファイルはsjisで保存しています。 過去の質問を見たり、調べてset name sjisとset name ujisと mb_convert_encoding($str, "EUC-JP", "SJIS");を それぞれ試しましたが文字化けのままです。 mb_convert_encoding($str, "utf-8", "SJIS"); であいうえおと入力してみたところあい???となりました。 また、adminから直接挿入した時、同じくあいうえおと入力しましたが、 こちらもあい???となりました。 adminの設定はutf-8ということのでしょうか。 照会順序以外文字コードについて表示されているところがわからなかったのですが、 どこで確認できますでしょうか。 また、php、adminともどこの設定を確認すれば良いのでしょうか? 恐れ入りますが教えていただけますでしょうか。

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

    MAMPをインストールして、統合開発環境であるAptanaを使用してphpのプログラミンを行いたいのですが、 日本語を出力すると文字化けしてしまいます。 このページ http://sevenbluesea.blog101.fc2.com/blog-entry-19.html を参考にして、php.iniを書き換えて保存し直し、AptanaとMAMPを再起動をしても文字化けは直りませんでした。 実行したいソースのテキスト・ファイル・エンコードはSJISで、 これをUTF-8にすると、ソース自体が文字化けを起こしてしまいます。 ソース自体の記述をUTF-8にしないといけないのでしょうか? 何か解決案や参考ページなどを教えていただけると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 【Redhat】SJISにおける文字化け

    OS:Redhat Linux ES 4.6 文字コードをSJISにしてファイルを表示しますと、特定の日本語文字(例えば、II)が 文字化けしてしまいます。 何が原因なのでしょうか。。。

  • phpMyAdminで文字化け

    phpMyAdminで日本語が文字化けします。 PHPの文字コードがUTF-8で phpMyAdminのconfig.inc.phpの文字コードもUTF-8にしています。 phpMyAdminのバージョンは3.1.4です。 どのようにしたら日本語が文字化けしないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHP+MySQLの文字化けで悩んでいます

    お世話になります。 Windows Server2003で、XAMPPでPHP+MySQLを利用しようとしていますが 文字化けが解消されず困っています。どなたか、お助けいただけないでしょうか。 他では成功していたSJISを使おうと思っていますがうまくいきません。 my.cnfでの[mysqld]や[mysql]などの設定、およびphp.iniのmbstringなどの設定は、 今まで成功していたWindowsやLinuxと同様に行いました。 PHPによる単純な日本語表示もMySQLモニタ上の日本語は問題ありません。 しかし、MySQLからの結果セットを受け取ると文字化けしてしまいます。 たとえば、 $re=mysql_query("SELECT * FROM tb"); while($kekka=mysql_fetch_array($re)){ print $kekka[0]; } などを実行すると「:?w?Z?カ??:」などの表示になってしまいます。 また、PHPからMySQLでINSERTすると、MySQLでも文字化けしてしまいます。 MySQLモニタで「SHOW VARIABLES LIKE 'char%';」を実行すると次のように表示されます。 character_set_client | sjis character_set_connection | sjis character_set_database | sjis character_set_filesystem | binary character_set_results | sjis character_set_server | sjis character_set_system | utf8 知識がなく、悩んでおります。 まことに申し訳ありませんが、どなたかお助けいただけないでしょうか。 どうか、よろしくお願いいたします。

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

    php4で以下のプログラムを実行したら、IEの設定で文字コードをどれにしても文字化けします。 文字化けしない方法はあるのでしょうか? よろしくお願いします。 <?php $str = "あいうえお"; $str = mb_convert_kana($str,"KV"); echo "$str\n"; ?>

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

    PHPでチャットを作っているのですが、どうしても、文字化けを起こしてしまいます。 文字化けを起こす場所は、入室するときの名前と、ログを読み出すときです。 それ以外は正常に動作しているように見えます。 文字化けする文字は、日本語だけで、アルファベットは問題ありません。 「テスト」と入力するとFirefoxでは「???鴻??」といった用になって、IEでは「・・"鴻ヨ」というように文字化けの仕方が違うようです。 文字コードはEUCです。 サーバーはwindowsでローカルサーバーを立てています。 サーバーの設定の問題でしょうか? アドバイスをよろしくお願いします。

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

    どうしても自己解決できません。宜しくお願いします。 sqliteで色々できるようになり、いざmysqlに移行と思いデータを mysqlに移そうとしています。ところが日本語がデータベース内で文字化けしています。 sqliteでは文字コードを変えると大丈夫だったのですが。 $simei=mb_convert_encoding($_POST[simei],"EUC-JP","SJIS"); musqlには「照合順序」というのがあり、よく意味が分からないのですがこれが文字コードを設定するところと思い、そこで「ujis_japanese_ci」と言うのに設定してみたり、sjisにしてみたり色々試したのですがやはりデータベース内では文字化けしています。 どのようにすればデータベース内に保存された日本語文字が文字化けしないで保存されるのでしょうか。宜しくご指導お願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう