- 締切済み
文字化けの質問の質問
数日前に文字化けについて質問したんですが、どなたからも回答を頂けませんでした。質問番号:5001147 原因は質問内容の曖昧さだとは思うのですが、プログラミングを始めたばかりで、どのように問題を定義すれば良いものなのかがよくわかりません。 そこで、どのような情報を掲示した上で質問すれば回答を得られやすいかをお聞きしたいです。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- Suzi
- ベストアンサー率38% (130/334)
質問番号:5001147を確認し、取りあえず全てUTF-8にしたのに文字化けした場合は、サーバーの設定等がありますが取りあえず、 <?php の次の行に header('Content-Type: text/html; charset=utf-8'); を入れてみてはどうでしょうか。
- kichi8000
- ベストアンサー率41% (660/1584)
状況が全く不明なので何とも言い難いですが。 エンコード、デコードの解釈が間違っているのでは? ブラウザに表示されているものは、サーバー上のHTML(PHP出力等含む)をブラウザが解析し「デコード」したものです。 ということは、サーバー上では「正しくエンコードされたデータ」が保存されていなければなりません。 サーバー上でのエンコード(保存)形式がUTF-8ということで、データ上にUTF-8と書いてあると言うことではありません。 テキストエディタで保存する際UTF-8形式で保存する必要があり、さらにアップローダでUTF-8以外に変換されないようにアップロードする必要もあります。 どこかでテキストがShift-JISに変換されて、サーバー上のテキストがShift-JISで保存されていると、ブラウザが勝手に判断することもあり得ます。 プログラムのミスだけでなく、転送ソフトウエアの設定も要チェックです。 回答者はあなたのしていることを見ているわけではないので、質問文の数行で判断するしかないのです。 使用しているOSは何か、テキストエディタは何を使ったのか、保存オプションは設定したのか、FTPアップローダの設定はどうなっているのか、それらをどう操作したのか、というところを質問文に書いて質問して下さい。 テキストエディタ上の文字を見せられただけでは解決しません。
お礼
そのあたりに関して、おすすめのサイトなどありましたら教えて頂けますか? 質問の際、具体的にどのような情報を掲載すれば良いか、参考にさせて頂きます。 ありがとうございます。
- masaki34
- ベストアンサー率48% (19/39)
いやいやいや… ここの質問は、前回の質問ではないでしょう?という事なのです。 私は回答のみの利用しかしていないので質問で可能なのかは不明ですが、本来ならそれを前回に加筆するか、出来なければ一旦閉じて加筆した内容で再質問するものではないでしょうか。 >うまくエンコードされず、やはりシフトJISで表示されてしまいます。 エスパー回答すると、ファイル作成時にUTF-8ではなくシフトJISで作っているのでは?と感じます。
お礼
そういうことでしたか。 理解力不足で申し訳ありません。 ご指摘を頂いたとおりに、設定ファイル、エスパー回答を頂いた部分は、今回の質問とは関係ありませんので、もう一度、質問を作りなおしてみたいと思います。 もし、ご回答頂けるようでしたら、そちらでお願いいたします。 ありがとうございました。
- masaki34
- ベストアンサー率48% (19/39)
えっと… >どのような情報を掲示した上で質問すれば回答を得られやすいかをお聞きしたいです。 という質問にお答えしたつもりです。 この質問にphp.ini等を書かれても、何も出てこないかと。 一応当方、デフォルト状態で <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php echo "こんにちは"; ?> </body> </html> というのを表示させたところ、ブラウザ(FireFox)のエンコードもUTF-8に設定され問題なく表示出来ました。ですので、 >phpを含むhtmlファイル(META情報でutf8と指定)を作成して、localhostからアクセスするだけの場合にも、このような設定は必要なものなのでしょうか? に関しては、上記の様な検証の場合では特に必要ないと思います。
補足
>どこをどのように変更、追加したのか不明です。 とのことだったので、変更、追加後の設定ファイルを載せれば良いのかと思ったのですが、これでは適切ではなかったようですね。 勘違いでした。 c直下にxamppを新しく置きなおして、試してみましたが、うまくエンコードされず、やはりシフトJISで表示されてしまいます。 ほかの問題があるのかと思うのですが、今現在見当がつかないので、何か原因で思い当たることがありましたら、教えていただけると助かります。
- masaki34
- ベストアンサー率48% (19/39)
たとえば前回だと、 >以前に質問されている方の記事やサイトで対策を載せている方の情報を見て と書かれていますが、どこを参考にしたのか不明で、 >php.ini、mycnf、database.phpなどを変更、追加などしてみました。 どこをどのように変更、追加したのか不明です。 変更後のphpinfo()の出力、特にmbstringでどうなっているのかも書かれていません。 具体的に何を行ったのか書かないと、単なる丸投げ質問と見なされるかと思います。
補足
php.iniは [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 0 my.cnfは [client] default-character-set = utf8 [mysqld] default-character-set = utf8 skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 database.phpは class DATABASE_CONFIG { var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'xxxxx', 'password' => 'xxxxx', 'database' => 'xxxxx', 'prefix' => '', 'encoding' => 'utf8' ); var $test = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'password', 'database' => 'test_database_name', 'prefix' => '', ); } としました。また、phpinfo()は mbstring Multibyte Support enabled Multibyte string engine libmbfl HTTP input encoding translation enabled Multibyte (japanese) regex support enabled Multibyte regex (oniguruma) version 4.4.4 Multibyte regex (oniguruma) backtrack check On となっていました。 このような感じでしょうか? 一つ思ったこととして、ただ、htdocsにphpを含むhtmlファイル(META情報でutf8と指定)を作成して、localhostからアクセスするだけの場合にも、このような設定は必要なものなのでしょうか?
- kichi8000
- ベストアンサー率41% (660/1584)
アップロードサーバー名や、FTPソフト名、OS名、PC名を書かないと誰も答えられません。 言語名だけでは無理でしょう。 最初のテストは簡単なスクリプトから行って下さい。
補足
xamppを使っているので、apache、FileZillaでOSはwindows vistaです。PC名とは、どのようなことを書けばよろしいでしょうか。 スクリプトはhtmlの中にphpのechoで文字を出力するだけのものからやってみました。
補足
試してみましたが、解決しませんでした。