サーバー移行時に、文字化けしたMySQLを無理やり表示させる方法
サーバー移行時に、MySQLの文字化けで困った件。
なぜか、旧サーバーで、照合順序に、latin1_swedish_ciとutf8_generai_ciの両方が含まれていたため、PHPMyAdmin上で文字化けを起こしていました。
旧サーバーでは、その状態でも、ユーザー側のページは文字化けせずに表示されていたのですが、
それを、そのまま移行しても、新サーバーではなぜか文字化けして表示される。。
さんざん、ネットで調べたりして、ALTER TABLE〜で、BLOB形式に変換した後にUTF-8に変換させたり、さくらエディタという、latin1対応のエディタで無理やりSQL文をUTF-8に変換させたりしましたが、うまくいかず。(後者は、良いところまで行きましたが、一部、変換できない文字があり。)
2時間くらいはまって、結局、PHPでMySQLのクエリを実行する前に、その都度、
下記のSQL文を叩くようにすれば、治りました。
(UTF-8には変換せず、そのままlatin1の状態で移行。)
set character set latin1;
うわ〜、こんなにハマったのに、1行で治った。。。^^;
なぜか、旧サーバーで、照合順序に、latin1_swedish_ciとutf8_generai_ciの両方が含まれていたため、PHPMyAdmin上で文字化けを起こしていました。
旧サーバーでは、その状態でも、ユーザー側のページは文字化けせずに表示されていたのですが、
それを、そのまま移行しても、新サーバーではなぜか文字化けして表示される。。
さんざん、ネットで調べたりして、ALTER TABLE〜で、BLOB形式に変換した後にUTF-8に変換させたり、さくらエディタという、latin1対応のエディタで無理やりSQL文をUTF-8に変換させたりしましたが、うまくいかず。(後者は、良いところまで行きましたが、一部、変換できない文字があり。)
2時間くらいはまって、結局、PHPでMySQLのクエリを実行する前に、その都度、
下記のSQL文を叩くようにすれば、治りました。
(UTF-8には変換せず、そのままlatin1の状態で移行。)
set character set latin1;
うわ〜、こんなにハマったのに、1行で治った。。。^^;
最初に記事を書いた日:2016/02/24
この記事をシェアする
関連記事
- ・外部メールサーバーからメール送信するPHPの関数(簡略版)
- ・TinyMCEにelFinderを搭載した環境で、ファイルを選択できるようにする方法
- ・秒速でPHPのフォームにreCAPTCHA v3を導入するサンプルコード
- ・htaccessのRewriteでGETパラメータを無理やり引き継ぐPHPコード
- ・RewriteRuleが効いているURLで、?以降の文字列を取得する方法
- ・ワードプレスでコメントを完全無効にする方法【コメントスパム対策】
- ・MacでPHP環境のローカルサーバーを立ち上げる方法
- ・画像ファイルをリサイズして、データで返す
リサイズした結果を、ファイルではなく変数に返す。 - ・サーバー内の全てのファイルから、文字列検索
HTTPS化作業に使える - ・PHPで、指定したディレクトリ以下のファイル一覧を再帰的に取得