> 管理機能 > データベースからの情報の文字化け |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
mi-taro |
投稿日時: 2009/5/3 18:29
対応状況: −−−
|
一人前 登録日: 2009/4/21 居住地: 投稿: 118 |
データベースからの情報の文字化け いつもお世話になっております。
現在、データベースからの情報の文字化けに悩んでいます。 インストール後、ショッピングページの商品一覧部分の 「おなべ」「アイスクリーム」があり、何も問題なく表示されていました。 商品名、コメント、写真を変えてみようと思い、 phpMyAdmminを使って、データベースに接続してみました。 そのとき、db_productsのname(商品名)を見ると、文字化けしていました。 おかしいな、表示は平気だったのに思いながら、文字化け部分をタイピングして 別の名前に変更しました。 ついでに写真も変えてみようと思い、 html>install>save_imageフォルダの中に、新しいイメージを保存しました。 (「おなべ」の写真がそのフォルダに保存されていたため) phpMyAdminで実行し、データベースの内容を変更しました。 そして、いざショッピングページを更新してみると、 商品名は[?????]で、イメージ部分も[?]となっており、文字化けが発生してしまいました。 自分が以前に作成したテスト用のテーブルの中では、日本語も普通に見れまして、 情報をphpで取り出しても、ブラウザで問題なく表示されていました。 文字コードも照合もUTF-8で統一しています。 とはいえ、写真ファイル名はローマ字なので、写真のパスはつながるはずだと思ったんですが。。。 phpAdminのバージョンの互換性の問題でしょうか? 自分で作ったテーブルの情報の種別には、MyISAMで、 ECCUBEで作られたテーブルの情報の種別はInnoDBでした。 これくらいしか違いがみれませんが、一体何がいけないのでしょうか。 *インストール完了したのですが、管理画面にログインできなかったため、苦しい状況に追い込まれております。 Mac環境でありますが、解決方法をご教授いただければと思います。 環境: EC-CUBE 2.3.4 Mac Tiger 10.4, PHP 4.4.9 Apache1.3.41 MySQL 5.1.31 プロトコルバージョン 10 phpMyAdmin 2.11.9.5 MySQLクライアントのバージョン 4.1.22 MySQLの文字セット UTF-8 Unicode MySQLの接続照合順序 utf8_unicode_ci |
seasoft |
投稿日時: 2009/5/4 0:23
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: データベースからの情報の文字化け うろ覚えですが、
> MySQLの文字セット UTF-8 Unicode > MySQLの接続照合順序 utf8_unicode_ci は後から設定しては駄目です。 設定した状態で、初期化する必要があります。 本件と関係あるか分かりませんが、参考まで。
|
ramrun |
投稿日時: 2009/5/4 1:35
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: データベースからの情報の文字化け MySQLの文字化けはフォーラムを検索するとたくさん出てきます。
説明するのも面倒なぐらい(汗)。 大体の方が勘違いしているのは、mysqlやphpmyadminなどのクライアントからmysqld(MySQLのサーバー)に接続し、設定をチェックして、utf8になっているからOKだと思っていることです。 mysqlクライアントから接続したときはmysqlクライアントに対する、phpmyadminクライアントから接続したときはphpmyadminクライアントに対する現状の設定をmysqld(MySQLサーバー)は返します。 EC-CUBEクライアントから接続をかけたらutf8になるかはmysqldのコンパイル時のオプション、もしくはmy.ini(my.cnf)の設定次第です。 それをせずになんとかするにはEC-CUBEからSET NAMESを発行するしかありません。 で、一番簡単で手っ取り早いのは正式版ではなくeccube-commuにすることです。 DBは一旦消して、新たに作り直してください。 |
mi-taro |
投稿日時: 2009/5/4 11:58
対応状況: 確認中
|
一人前 登録日: 2009/4/21 居住地: 投稿: 118 |
my.cnfの設定です seasoft様
ramrun様 ご回答ありがとうございます。 自分では右も左もわからないことだらけで、 回答してくださる言葉に大変勉強になっております。 ただ、まだ理解ができません。 my.cnfの設定は以下です。 (*は文字化けの問題が発覚してから、変更しました。) [mysqld] socket=/tmp/mysql.sock default-character-set=utf8 collation-server = utf8_general_ci* init-connect = SET NAMES utf8* character-set-server = utf8* [mysql] default-character-set=utf8 [mysqldump] default-character-set = utf8* *seasoft様 >設定した状態で、初期化する必要があります seasoft様のいう設定した状態とは、my.cnfの設定でよかったでしょうか。 また初期化するとは具体的に一体どのようにするのでしょうか? 初期化の際に消えてしまうのは、DBの中の情報だけでしょうか? *ramrum様 >mysqldのコンパイル時のオプション、もしくはmy.ini(my.cnf)の設定次第です。 上記のmy.cnfでも間違いがありますでしょうか。 テンプレートを編集したり、デザインを変えたのでできれば、 ver2のままでやってみたいのですが、eccube-commuに入れ替えても cssやtpl素材は使えるのでしょうか。 すみません。何卒よろしくお願いします。 |
ramrun |
投稿日時: 2009/5/4 18:03
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: my.cnfの設定です ・phpmyadminでの文字化け
・データベースの文字化けについて教えてください 引用: ver2のままでやってみたいのですが、eccube-commuに入れ替えてもcssやtpl素材は使えるのでしょうか。 広範囲に細々と変更が入っているので、tplはそのまま〜 というわけにはいかないかと。 |
seasoft |
投稿日時: 2009/5/4 19:07
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: my.cnfの設定です > seasoft様のいう設定した状態とは、my.cnfの設定でよかったでしょうか。
たしかそうだったと思います。 また、初期化のオプションでも設定できたと思います。 > また初期化するとは具体的に一体どのようにするのでしょうか? http://dev.mysql.com/doc/refman/5.1/ja/drop-database.html http://dev.mysql.com/doc/refman/5.1/ja/create-database.html > 初期化の際に消えてしまうのは、DBの中の情報だけでしょうか? DB を初期化した場合は、そうだと思います。
|
mi-taro |
投稿日時: 2009/5/5 1:13
対応状況: −−−
|
一人前 登録日: 2009/4/21 居住地: 投稿: 118 |
解決しました! ramrun 様
seasoft 様 どうもありがとうございました!文字化けの問題は解決いたしました! すでによくある質問にもかかわらず、リンクを貼っていただきありがとうございました。 参考にしたURL http://sb.xrea.com/archive/index.php/t-11775.html そこから学んだ解決策は以下のとおりです。 phpAdminをひらいて、SQL文で設定をチェック。 show variables like "char%"; を入力、実行すると character_set_server がlatinになっていました。 自分のサーバだったのでmy.cnfに character_set_server = utf-8を書き足しました。 さらにdata/class/SC_DbConn.php L64〜に、 if (DB_TYPE == 'mysql') { $objDbConn->query('SET NAMES utf8'); } を書き足しました。 すると、インストールのままのオリジナルの内容の文字化けはなおりませんでしたが、 データベースで自分で書き直して、更新するとちゃんと日本語が表示されました。 本当にありがとうございました。 今後もよろしくお願いいたします。 |
ramrun |
投稿日時: 2009/5/5 23:36
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: 解決しました! できたようでよかったですねと言いたいところですが、先に書いたとおり
引用: それをせずになんとかするにはEC-CUBEからSET NAMESを発行するしかありません。 結局、それを理解しておられないようなのが残念です。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |