質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

Q&A

解決済

2回答

5714閲覧

MySQLでDumpした内容で文字化けするので、phpでエクスポートしたい

creator.M

総合スコア80

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

0グッド

0クリップ

投稿2021/03/31 08:19

編集2021/04/04 13:52

すみません。
下記の状況なので、色々調べました。
最終的に現在動いているphpのソースコードのファイルに、エクスポートできるようにソースコードを追加することで、解決したいと思います。
ネットで調べていますが、sqlでエクスポートしてMyAdminでインポートできるようにしたいです。

PHPが5系で動くシステムをサーバー引越しで、PHP7.3で動くサーバーに移転しました。
データベースも移転しましたが、myadminなどで確認したところ文字化けがありました。

MySQLの文字コードは、次の画像の通りです。
イメージ説明

PHPのプログラムは、HTMLの出力がECU-jpになっています。

システムでは、正常にデータを扱うことができています。

でも、myadminなどで表示されると、文字化けします。
ネットで色々調べて、コアサーバーにSSH接続して、MySQLのdumpを試みましたが、コマンド入力してもパスワードの入力を求められずフリーズした感じにで先に進まないです。

mysqldump --single-transaction -u ユーザー名 -p データベース名 > 出力先のファイル

と試しました。
この記述では、最後に;が無いため、処理が進まなかったと思われます。

サーバーのデータベースのバックアップ機能を使い、保存されていたdumpファイルをダウンロードして確認したら、文字化けしていました。

文字化けを解消してデータベースの引越しを行いたいです。
MySQLは、初心者なので、困っています。

作られているシステムのソースコードは、mySQLですが、移転先では、mySQLiに関数を変えてアップロードしました。
よろしくお願いします。

UTF8以外の照合順序をutf8_general_ciにMyAdminで変更しても、変わりません。
使われているPHPのソースが書かれているファイルの文字コードが、ECU-JPです。
PHPで書かれているHTMLのヘッダーの文字コード指定が、ECU-JPです。

mysqlで確認しましたので、掲載します。

myslq

1-- phpMyAdmin SQL Dump 2-- version 3.5.2 3-- http://www.phpmyadmin.net 4-- 5-- ホスト: localhost 6-- 生成日時: 2021 年 3 月 31 日 11:25 7-- サーバのバージョン: 5.7.32-log 8-- PHP のバージョン: 5.3.29 9 10SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; 11SET time_zone = "+00:00"; 12 13 14/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 15/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 16/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 17/*!40101 SET NAMES utf8 */;

メール配信機能があるので、PHPがEUC-JPで保存されていて、ソースでもEUC-JPが指定されているのだと推測します。

VIMで文字コードをEUC-JPに指定して開いても、文字化けが直りません。

画像を追加します。
イメージ説明
utf8 general_ci で照会順序設定されていますが、文字化けしています。
イメージ説明
テキストエディタで開いたキャプチャです。
イメージ説明

イメージ説明

EUCになっている部分も、文字化けしています。
コアサーバー なので、ネットで知ったMySQLの文字コード設定の方法を試すのを躊躇しています。
文字コードの設定を変えても、影響ないでしょうか?

dumpを行うときに、文字コードを指定しましたが直りませんでした。
イメージ説明

--default-character-set=utf8mb4
で試した結果です。
イメージ説明

正常に稼働しているコアサーバーのphpソースに、下記のようにvar_dumpを追加して、変数の中身を確認しました。
文字化けせずに、正常に読み込まれていることを確認しました。
差し障りがあるので、画像を加工しました。

この結果から、PHPでプログラムを作ることで解決できそうに思います。
でも、なぜ、MyAdminのエクスポートで文字化けするのかは、謎です。
文字化けの状態で保存されているのか、推測するしかないです。

php

1function page_header(){ 2$spl = mysql_query("select * from setting"); 3$set = mysql_fetch_array($spl); 4 5var_dump($set); 6

イメージ説明

MyAdminで文字化けせずにエクスポートできたら良いのですが、プログラムでデータベースにアクセスすると正常に読み込めるのです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hentaiman

2021/04/02 08:26

utf8とutf8mb4の違いで文字化け起こるかどうかは確認した事ないけど、とりあえずその部分を直してdumpしてみては?あとエディタで開く時の文字コード合ってます?
creator.M

2021/04/02 10:13

はい。エディタで開くときに、UTF-8、ECU-JPと切り替えて試しましたが、ダメでした。 データベースの文字コードのキャプチャ撮りましたので、掲載します。
hentaiman

2021/04/02 10:23

テーブルの文字コードだけutf8じゃないって事はないですよね? mysqlの入ってるサーバー内でdumpコマンド打ってるんですよね?
creator.M

2021/04/02 10:28

はい。 レンタルサーバーのmysqlで、Dumpファイルが保存されているフォルダから、ダウンロードして確認しました。
creator.M

2021/04/02 10:29

コアサーバー のバックアップの機能も、使いました。
hentaiman

2021/04/02 10:33

コアサーバーの事は名前も知らんので分かりませんが、 phpは出力部分だけでなく処理全体もeuc-jpですか?
creator.M

2021/04/02 10:48

処理全体というかPHPのファイルが、euc-jpで保存されています。
guest

回答2

0

自己解決

MyAdminで文字コードをECU-jpに指定してエクスポートしたものをMyadminでインポートするとエラーになります。
途中までしかテーブルがインポートされないです。
そのため、今動いているphpのソースコードに、プログラムを追加してCSVなどで、テーブル単位でエクスポートしようと思います。
動いているphpのプログラムの方は、文字化けせずに動いているので。

投稿2021/04/04 14:09

creator.M

総合スコア80

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

返答貰った内容から察するにデータがeucjpで入っているのではないか?という事でmysqldumpのオプションに--default-character-set=ujisにつけてみてはどうでしょう?

投稿2021/04/02 10:54

hentaiman

総合スコア6415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

creator.M

2021/04/02 12:47

ありがとうございます。 mysqldump --single-transaction -u hoge -p --default-character-set=ujis database_name --no-tablespaces > public_html/***.dump で、出力しました。 でも、文字化けは、直っていませんでした。 画像を、今から追加します。
hentaiman

2021/04/02 13:03

DBに入っている文字コード何なのか分からないとな 実はちゃんとした文字コードで入ってるなら --default-character-set=utf8mb4で良いと思うけど
creator.M

2021/04/02 13:18

確かに。 でも、不思議なのは、古い方のコアサーバー のシステムは、文字化けしていてもちゃんとめーる配信内容や会員様の名前など正常に表示されるのです。 その為、見た目だけ文字化けで、データベースの元は、生きているようです。
creator.M

2021/04/02 13:23

--default-character-set=utf8mb4 で試しましたが、ダメでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問