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

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

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

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

mysqli

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

解決済

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

creator.M
creator.M

総合スコア75

MySQL

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

mysqli

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

2回答

0評価

0クリップ

2936閲覧

投稿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

-- phpMyAdmin SQL Dump -- version 3.5.2 -- http://www.phpmyadmin.net -- -- ホスト: localhost -- 生成日時: 2021 年 3 月 31 日 11:25 -- サーバのバージョン: 5.7.32-log -- PHP のバージョン: 5.3.29 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!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

function page_header(){ $spl = mysql_query("select * from setting"); $set = mysql_fetch_array($spl); var_dump($set);

イメージ説明

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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で保存されています。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

MySQL

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

mysqli

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