ホーム > その他 > MySqlの文字コード

MySqlの文字コード


OracleDBからMySqlにデータを移行したことろ文字化けしている。
しまった。文字コードの設定をしていなかったことを思い出した。。。

MySqlにログインして文字コードを調査。

>show variables like ‘character_set%’;

+————————–+—————————————-
| Variable_name | Value
+————————–+—————————————-
| character_set_client | cp932
| character_set_connection | cp932
| character_set_database | latin1
| character_set_filesystem | binary
| character_set_results | cp932
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5
+————————–+—————————————-

思ったとおり、「latin1」になっている。
「utf8」に変更しないと。

すでにデータを突っ込んでいるので先ずはデータをファイルにダンプする。

#mysqldump -u [ユーザ] -p[パスワード] lawyerseek –default-character-set=latin1 > dump.sql
※「–default-character-set=latin1」を指定しないとファイルにn出力した時点で文字化けしてしまう。

出力したファイルをテキストエディタで開き「latin1」を「utf8」に置換する。

次にMySqlの設定を変更する。

C:\Program Files\MySQL\MySQL Server 5.5\my.ini

※Linuxは「/etc/my.cnf」にある。

を開き、以下のように文字コードの設定を追加する。

※Windowsの場合はなぜか、my.iniを「C:\Windows」以下にも配置しない反映されない。

[client]
default-character-set=utf8

[mysqld]
character_set_server=utf8

MySqlを再起動する。

# net mysql stop

#net mysql start

※Linuxは「/etc/init.d/mysqld restart」でOK。

文字コード間違って作成されているデータベースを削除する。
>drop database lawyerseek;

文字コードを指定してデータベースを再作成
>create database lawyerseek default character set utf8;

先ほどバックアップして、文字コードの置換を行ったダンプファイルを読み込む。

>mysql -u lawyerseek -plawyerseek lawyerseek < _dump.sql

これで文字コードが直っているはず。

カテゴリー:その他
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す