- PR -

phpMyAdminで入力した文字をPHPで表示すると文字化けします

1
投稿者投稿内容
加藤ローサ
会議室デビュー日: 2005/09/21
投稿数: 15
投稿日時: 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では文字コードの扱い方が変わったようですが、
このあたりも関係しているのでしょうか?

お忙しいとこまことに申し訳ありませんが、
どなたかアドバイスいただけますでしょうか。

よろしくお願いいたします。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-03-15 16:39
MySQL4.0系は特に文字コードで悩む部分はなかったと思います。勝手に変換されてしまったりはしません(なのでSET NAMESなどが不要なわけで・・)。基本的に「入れたままの状態で出てくる」ハズです。

phpMyAdmin2.8.2 であれば、表示用のLanguageの選択が出来ませんか?(SJIS,EUC,UTF-8)。DBをSJISで使っているのであればこちら(phpMyAdminの表示上のLanguage)を合わせてみてください。

(以下蛇足)
引用:

加藤ローサさんの書き込み (2007-03-15 14:20) より:
PHP側は、

<META http-equiv="Content-Type" content="text/html; charset=shift_jis">

としています。


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 ]
加藤ローサ
会議室デビュー日: 2005/09/21
投稿数: 15
投稿日時: 2007-03-19 11:37
shimix様

おせわになっております。

返信遅れましてまことに申し訳ありませんでした。

phpMyAdminのLanguageの設定で、
「日本語−Japanese(sjis)」を選択することで、
見事解決いたしました!

本当にありがとうございました。

初歩的な質問で申し訳ありませんでしてた。
1

スキルアップ/キャリアアップ(JOB@IT)