- - PR -
phpMyAdminで入力した文字をPHPで表示すると文字化けします
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-15 14:20
現在ハッスルサーバでMySQLとPHPでプログラミングしていますが、
MySQLにphpMyAdminで入力した全角文字を、 PHPでブラウザで表示しようとすると文字化けします。 当方環境は、 PHP 4.3.x MySQL 4.0.x phpMyAdmin 2.8.2.4 です。 当方ムーバブルタイプを使用しており、 ムーバブルタイプから登録したデータはphpMyAdminから見ると文字化けしますが、 ムーバブルタイプには文字化けせずに表示されます。 一方phpMyAdminから入力しだデータは、phpMyAdminで見ても文字化けしていませんが、 PHPから取得してブラウザで表示すると文字化けします。 PHPでムーバブルタイプで入力したデータと、 phpMyAdminで入力したデータの両方を表示すると、 前者は文字化けせず、後者は文字化けします。 phpMyAdminから、 SHOW VARIABLES; とSQLを実行してDB側のcharacter setの値を見ると、 ujisになっています。 PHP側は、 <META http-equiv="Content-Type" content="text/html; charset=shift_jis"> としています。 さらに、SELECT文発行前に、 mysql_query("set character set sjis") or die("エラー"); としているのですが、 かならずエラーになります。 しらべたところ、MySQL4.0では set character set cp1251_koi8 のみ可能ということだったのですが、 クライアントからsjisを指定する方法はあるのでしょうか? さらにMySQLは4.0と4.1では文字コードの扱い方が変わったようですが、 このあたりも関係しているのでしょうか? お忙しいとこまことに申し訳ありませんが、 どなたかアドバイスいただけますでしょうか。 よろしくお願いいたします。 | ||||
|
投稿日時: 2007-03-15 16:39
MySQL4.0系は特に文字コードで悩む部分はなかったと思います。勝手に変換されてしまったりはしません(なのでSET NAMESなどが不要なわけで・・)。基本的に「入れたままの状態で出てくる」ハズです。
phpMyAdmin2.8.2 であれば、表示用のLanguageの選択が出来ませんか?(SJIS,EUC,UTF-8)。DBをSJISで使っているのであればこちら(phpMyAdminの表示上のLanguage)を合わせてみてください。 (以下蛇足)
metaタグだけでなくheader()でcontent-typeと一緒に文字コードを指定した方がいいかと思います(こちらの方が優先)。またスクリプトの文字コードと入出力(ブラウザに返すhtml及び送られてくるデータ)の文字コードを同一にする必要もないので、内部的にはEUC-JPの方が扱いやすいと思いますが。 #私の場合、出力はSJISかUTF-8の要望が多いですがスクリプトはEUC-JPで書きます。 (追記) XREAサーバ(php4/MySQL4.0仕様のアカウントがありました)で確認しました。phpMyAdminのLanguageを合わせていないと化けますね。私はdefaultで問題ないので意識しなかったですが(汗 [ メッセージ編集済み 編集者: shimix 編集日時 2007-03-15 16:49 ] | ||||
|
投稿日時: 2007-03-19 11:37
shimix様
おせわになっております。 返信遅れましてまことに申し訳ありませんでした。 phpMyAdminのLanguageの設定で、 「日本語−Japanese(sjis)」を選択することで、 見事解決いたしました! 本当にありがとうございました。 初歩的な質問で申し訳ありませんでしてた。 |
1