※ ChatGPTを利用し、要約された質問です(原文:phpMyadminの文字化け)
phpMyadminの文字化け
このQ&Aのポイント
さくらレンタルサーバを利用し、問合せフォームを作成しています。タイトルにもありますようにデータベース格納後phpMyAdminで見た際に文字化けしてしまいます。半角数値は見れるのですが、日本語は文字化けしてしまいます。
環境はさくらレンタルで、DBはMySQLを使用しています。文字セットはUTF-8 Unicode (utf8) ですが、phpMyAdminで日本語が文字化けして表示されます。また、プロシージャを直接コールすると文字化けしません。
問題の原因として、Apacheのバージョンやphpのエンコード、メタタグの設定などが考えられます。上記の設定を見直し、特にメタタグで文字コードをUTF-8に設定することを試してみると良いでしょう。また、プロシージャのパラメーター設定時にも特に文字エンコードの変換を行う必要があります。
さくらレンタルサーバを利用し、問合せフォームを作成しています。
問合せ内容をプロシージャを使いデータベースに格納しています。
タイトルにもありますようにデータベース格納後phpMyAdminで見た際に文字化けしてしまいます。
半角数値は見れるのですが、日本語は文字化けしてしまいます。
環境は以下の通りです。
■さくらレンタル
DB:MySQL クライアントのバージョン: 5.1.30
MySQL の文字セット: UTF-8 Unicode (utf8)
MySQL 接続の照合順序 utf8_general_ci
テーブルの照合順序utf8_general_ci
カラムの照合順序utf8_general_ci
■Web サーバ
Apache(バージョン不明
phpMyAdminのバージョン3.2.3
PHPバージョン5.2.11
データベース接続方法
PDOを使用し、プロシージャーをコールしています。
プロシージャーのクリエイト文では文字コードのセットはしていません。
phpMyAdminからプロシージャを直接コールすると文字化け致しません。
$this->dbh = new PDO(DB_NAME, DB_USER, DB_PASSWORD);
$this->dbh -> query("SET NAMES UTF-8;");
上記で接続しています。
■PHPファイル
phpのエンコードはShift-JIS
メタタグは以下の用にしています
<meta http-equiv="Content-Type" content="text/html; Shift_JIS" />
<meta http-equiv="Content-Language" content="ja" />
プロシージャのパラメーター設定時に
mb_convert_encoding($_SESSION['other'],"UTF-8")
セッションの値をUTF-8にエンコードして設定しています。
上記のようになっております。
メタタグでUTF-8に設定すればいいのでしょうか?
設定またはエンコード方法で解決できるのでしょうか?
以上、よろしくお願いします。
補足
さくらレンタルサーバの場合データベースの作成は自動で行われてしまう為、作成時にデータベースの設定は出来ないようです。 このハードコピーはさくらレンタルで利用してるphpmyAdminでしょうか? もしさくらレンタルでも自分でデータベースを作成することが出来るようでしたらやり方を教えて下さい。