バージョン選択

フォーラム

メニュー

オンライン状況

55 人のユーザが現在オンラインです。 (45 人のユーザが フォーラム を参照しています。)
登録ユーザ: 2
ゲスト: 53
tk88vnm ita855754 もっと...

サイト内検索

 > 管理機能 > データベースからの情報の文字化け

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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
は後から設定しては駄目です。

設定した状態で、初期化する必要があります。

本件と関係あるか分かりませんが、参考まで。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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 を初期化した場合は、そうだと思います。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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を発行するしかありません。
なので、
結局、それを理解しておられないようなのが残念です。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,697名です
総投稿数は109,943件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1283
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.