MySQL for Excelで文字化けを解消する方法

ExcelはShift-JISで動いているので、全ての文字コードをShift-JISに合わせる必要がある。

1.MySQL サーバ側 カラム

SHOW CREATE TABLEでカラムに邪魔なcharacter setがないこと。
`category` varchar(25) DEFAULT NULL,

のようになっていることが望ましい。

`category` varchar(25) CHARACTER SET utf8 DEFAULT NULL,

だとUTF8が設定されてしまっているので良くない。これを消すには

ALTER TABLE table1 MODIFY `category` varchar(255);

などとする。

また、日本語を含まないカラムでlatin1といった文字コードになっていることがある。

SHOW CREATE TABLE table1;
CREATE TABLE `table1` (

`column1` varchar(5) CHARACTER SET latin1 DEFAULT NULL,
`column2` varchar(5) CHARACTER SET latin1 DEFAULT NULL,

のようにsjisと混在している状況です。こちらもCHARACTER SET設定をなくすか、sjisに統一しておく必要がある。そうしないとExcelから修正してCommit時に

MySQL Error 1267:
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (sjis_japanese_ci,IMPLICIT) for operation ‘=’

Deleted 0, Inserted 0, Updated 0 row(s).

といったエラーが出てしまう。

2.MySQL サーバ側 テーブル

SHOW CREATE TABLEでテーブルのcharsetがsjisになっていること。

DEFAULT CHARSET=sjis

のように表示されることが望ましい。これを変えるには

ALTER TABLE table1 DEFAULT CHARSET sjis;

とする。

3.読み込み元データ

csvデータをインポートする場合には、読み込み設定も変更する必要がある。

SET character_set_database=sjis;

としてから、下記のように読み込む。

LOAD DATA LOCAL INFILE ‘data.csv’ INTO TABLE table1 FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘”‘;

Puttyでも正しく表示するには

SSH端末から入りMySQLクライアントとしてログインし、テーブル内容を正しく表示するには。

1.Putty設定で、ウィンドウ→変換 をShift-JISにする

2.シェルの文字コード

echo $LANG
ja_JP.sjis

こうなるために、

export LANG=ja_JP.sjis

しておく。

~/.bashrc の末尾に追記しておくのも良い。

3.MySQLログイン後の変数設定

mysql> SET character_set_results = ‘SJIS’;

のようにする。

補注

sjisではなくcp932にした方が良いという話もある。私の環境ではsjisで動いているため、今回はそのままにしておく。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする