質問
-
スタンダード
DB移行による文字化け -
本文:
firbirdからスターサーバー移行により、DB変更でutf8からutf8mb4になったようで、文字化けします。
ウェブからデータを追加すると、追加した分は正しく表示されますが、以前のデータは文字化けします。
逆に、phpMysqlでは、以前のデータは正しく、追加した
"賭" の文字が "è³­" と表示されます。
phpの設定はutf8にしてあります。
utf8mb4とutf8(utf8mb3)の違いでこのようなことが起こるのでしょうか?
解決のヒントをお願いいたします。 - 緊急度:急ぎ投稿者:pdさん投稿時間:2019/04/12 16:56
回答 No.8844
-
本文:
ネットオウル側では、
5.0.x → 5.5.x (MariaDB)
に変更することでデータベースの変換が必要になりうることを把握しているでしょうから、
おそらくは、データベースはネットオウル側で機械的に変換をかけてはいるかもしれませんね。
他方で、ユーザ自身のプログラムや設定の中身を見たりいじったりすることはやらない(やれない)のが大原則なので、
どこかで齟齬が出ているのでしょう。
ヒントくらいのことしか書けなくて恐縮ですが。
- 投稿者:ayaguchiさん 投稿時間:2019/04/12 17:56
質問者からのコメント
コメントありがとうございます。
データベースサーバのバージョンを
5.0.x → 5.7
で新たなデータベースを作成した結果、問題なく動きました。
上の回答で、データ修正できなかったのは、sqlでテーブルの作成したためか?
phpMysqlでテーブルの作成をしたら、修正できました。
文字化けの原因は依然不明です。
回答 No.8842
この回答がベストアンサーです
原因が utf8 と utf8mb4 で合わないことだと決めつけるのも早計かという気もしますが(emoji が扱えないとかならまだしも)、
データベースサーバのバージョンは
5.0.x → 5.5.x(MariaDB)
に変わるようですから、そのあいだの変更点を精査する必要はあるかもしれません。
さて、 utf8 と utf8mb4 に関しては、
データベース自体の文字コードセット、通信の文字コードセット、PHP側の文字コードセット、それぞれが一致していないとおかしなことになるのではないでしょうか。
PHP の設定も、データベース自体の文字コードセットも utf8mb4 に変更してみては?
反対に、全てを utf8 に揃えるというのも手かもしれません、時代後れなのであまりすすめられませんが。
質問者からのコメント
コメントありがとうございます。
データベースサーバのバージョンを
5.0.x → 5.7
で新たなデータベースを作成した結果、問題なく動きました。
しかし、phpMysqlで5.7のデータ修正がサポートされていないようで、使えません。
"賭" の文字が "è³­" に化けるのが問題で、この原因が解れば解決できそうなのですが...