すみません。
下記の状況なので、色々調べました。
最終的に現在動いているphpのソースコードのファイルに、エクスポートできるようにソースコードを追加することで、解決したいと思います。
ネットで調べていますが、sqlでエクスポートしてMyAdminでインポートできるようにしたいです。
PHPが5系で動くシステムをサーバー引越しで、PHP7.3で動くサーバーに移転しました。
データベースも移転しましたが、myadminなどで確認したところ文字化けがありました。
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で文字化けせずにエクスポートできたら良いのですが、プログラムでデータベースにアクセスすると正常に読み込めるのです。
回答2件
あなたの回答
tips
プレビュー