百見は、一聞にしかず

見てもわからない事は、とりあえず聞いてみよう。

mariaDBの文字コード変更について

前々回の時にCSVが読み込めなかったという記事を書きましたが、今日はそのCSVを読み込んでDBにインサートした際に日本語が全て?(ハテナ)になってしまったという事を書きます。


結論から言いますと、ご察しの方も多いかと思いますが、テーブルの文字コードがUTF8ではなかったという事でした。
デフォルトではlatin1という文字コードでした。
latin1とは、ラテンアルファベットの文字コード標準との事です。なるほど、と良く分かっていませんがサラッと次に行きます。ちなみに、latinはラテンと読むみたいですね。正直読めなかったです。
ということで、日本語がハテナになる現象の解決方法に進みたいと思います。

 

文字コードUTF-8に設定
データベースを再起動
データベースやテーブルの文字コードを変更
テーブルの内容を入れ替える

 

文字コードUTF-8に設定

・以下の設定ファイルを編集します。

  vi /etc/my.cnf.d/server.cnf

・mysqldにutf8の部分を追加します。

[mysqld]
character-set-server=utf8 # 追加

 f:id:lbblue:20170217213150p:plain

 

■データベースを再起動

・端末から以下のコマンド実行します。

  systemctl restart mariadb

 

■データベースやテーブルの文字コードを変更

・データベースのデフォルトの文字コードを変更します。

  alter database データベース名 default character set utf8; 

・テーブルの文字コードを変更します。

  alter table テーブル名 default charset=utf8;
  alter table テーブル名 convert to charcter set utf8; 

 

■テーブルの内容を入れ替える

これは色々なやり方があるかと思いますが、簡単なdeleteとinsertを駆使してテーブルの中身を入れ替えます。


※補足としてテーブルの中身や定義情報を確認します。
select * from テーブル名;
show create table テーブル名;

 

これでやっと日本語が入りました。よかったです。

 

話は変わりますが、前回グーグルのイースターエッグについて書きましたが、他にも「一回転」というのもあります。その名の通り検索結果がぐるっと一回転するのですが、二回転とか三回転は無かったですね。流石に目が回ってしまうからでしょうか。