アフィリエイト広告を利用しています

2019年11月23日

latin1をutf-8に変更する

mysql の文字コードを確認するコマンド


show variables like '%char%';


実行すると

character_set_server =latin1

になっている。

latin1ではなくutf8が正しい状態だが、

utf8に変更するにはmysqlの再起動が必要。

システムはもうオープンしていて、勝手に再起動できない。

何より、もうデータが登録されている。データは文字化けしていないか心配。

調べて見ると

ウムラウト等の特殊文字も漢字もシステム上では正しく表示されているし、

データをUTF-8形式でダウンロードすれば文字化けしていない。

問題なさそうだが、phpMyAdminでは文字化けして表示される。

sshで接続してコマンドベースでmysqlを操作した場合も文字化けしている。

トラブルがなければ大丈夫な状態

データベースが破損するようなトラブルに見舞われるようなことがなければ、

今のままで大丈夫。

しかし、mysqldumpで取得したバックアップファイルからデータベースを復元しようとすると

文字化け部分は復旧不能となる。

これでは不安なので、latin1をutf8にすることに決めた。

設定変更だけで済む?

データベースには utf8 で登録されていて、

見え方に問題があるので

character_set_server = utf8

にして、mysqlを再起動すれば解決すると思った。

実行してみると予想とは違った。

ウムラウト等の特殊文字と漢字がphpMyAdmin上に加えて、

システム上でも文字化けするようになった。まずいので、

character_set_server = latin1

に戻した。

データ変換を行う

失敗してみて、

character_set_server = utf8

にするのに合わせてデータの変換も必要と分かった。

幸いなことに、ウムラウト等の特殊文字と漢字はまだ

10数件しか登録されていない。そこで、

@ウムラウト等の特殊文字と漢字の正しい値をメモ書き

Acharacter_set_server = utf8にし、mysqlを再起動

B文字化けした箇所を@のメモを見ながら手作業で修正。

これでうまく行った。約30分で終了。

ちなみにAではmy.cnfファイルの[mysqld]に

character-set-server = utf8

を追加した。

最後に思うこと

mysqlのデフォルト値を utf 8にしてもらいたい。












【このカテゴリーの最新記事】

posted by db-engineer at 00:00 | Comment(0) | Mysql

この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

検索
最新記事
カテゴリーアーカイブ
プロフィール
db-engineerさんの画像
db-engineer
プロフィール
タグクラウド