Home » パソコン » 言語 etc... » MySQL » [MySQL] Tips » [MySQL] latin1 を utf8 へ
[MySQL] latin1 を utf8 へ
MySQL をインストールすると、デフォルトの文字コードは latin1 に設定されています。
この状態でも ( PHP など ) プログラム側で対応してれば、日本語マルチバイト文字も ( 見た目上 ) 問題なく使えるわけですが・・・
- バックアップ ( mysqldump ) で化ける
- phpMyAdmin で化ける
- etc
百害あって一利なし な訳です。
というわけで、latin1 で作ってしまったデータベースを utf8 に移行する方法を説明します。
※この方法だけではないと思いますし、最適かもわかりませんが、とりあえずできたので良しとします。
1) |
文字コードを指定して、データベースのバックアップを取る mysqldump を単純に実行すると日本語など 2 バイト文字が化けてしまうので、データベースが latin1 で作成されている ということを明示的に指定してバックアップを取る。
|
|
2) |
作成したファイルを UTF-8 に変更する バックアップファイルの形式が UTF-8 以外の形式になっているとリストア時に文字化けが発生するので、TeraPad や サクラエディタ など、UTF-8 に対応しているエディタでファイル形式を明示的に UTF-8 に変換します。 |
|
3) |
リストア時に使用する文字コードを作成したファイルに記述する バックアップファイルの先頭に、リストア時に使用する文字コードを指定する 1 文を追記します。
|
|
4) |
テーブルの文字コードを修正する バックアップファイルを確認して、CREATE TABLE ~ と書かれた行の数行下に CHARSET=latin1 という記述があれば、 CHARSET=utf8 に修正する。 |
|
5) |
リストアする UTF-8 ( 紹介順序:utf-general-ci ) で作成しておいたデータベースに、通常の手順でリストアします。
|