LoginSignup
16
14

More than 5 years have passed since last update.

apt-getでMySQLを入れた時にlatin1が鬱陶しくて仕方がない方へ

Last updated at Posted at 2014-06-11

概要

aptで導入したMySQLのlatin1をやっつける

apt-getで入れるとlatin1なMySQLが

apt-get install mysql-server
でMySQLを導入する方の中にはキャラクターセットがlatin1になってたせいで「日本語が化けるアアアアアアアアア」って人がそこそこいるんじゃないかと思います。

default-character-set=utf8でやれって記事を見かけると思うんですが、アレはMySQL5.5ではもう廃止されました。「MySQLで文字化けしたからdefault-character-setしたんだけどうまくいかないよ~」はアカンです。バージョンを確認しましょう。

直し方

キャラクターセットを見てみるとデフォルトは多分こんなの

mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

このlatin1を駆逐するには
/etc/mysql/my.cnf を開いて、[mysqld]のところに
character_set_server=utf8
と書いて、mysqlをrestartすれば終わりです。service mysql restart

mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

クライアントの影響を受けずに常にutf8で返したいときは/etc/mysql/my.cnfに
skip-character-set-client-handshake
を加えましょう。

終わりに

Ubuntu14をVMに突っ込んでMySQLのキャラクターセットの設定をしている最中に
「キャラクターセット周りで困ったから調べたら"default-character-set=utf8"にすればいいって書いてあったのにトラブったことが昔あったなぁ」
というのを思い出して調べてたところ…
思いの外、default-charac(略)でやれってエントリが残ってたんで憤慨してこのエントリを書きました。もう5.5でいいじゃん

16
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
14