Config characterset cho mySQL với tiếng Nhật

Nếu insert dữ liệu với nội dung có tiếng Nhật vào mySQL mà khi truy vấn dữ liệu để sử dụng, nội dung thu về được kết quả như dưới(toàn hỏi chấm trong mysql):

[mysql> SELECT * FROM people;
+-----+----------+------------+---------------------+
| id  | gender   | name       | address             |
+-----+----------+------------+---------------------+
|   1 | ?????    | ??????     | ?????????57-6       |
|   2 | ?????    | ????????   | ????????????5-7     |
|   3 | ??????   | ?????????? | ??????????????1-25  |
+-----+----------+------------+---------------------+

Đây là lỗi default-character đang không được set là utf8(mặc định của characterset là latin1). Khi check status của mySQL:

Ta thấy, Server characterset đang là latin1 nên các ký tự không phải latin như tiếng Nhật, tiếng Trung,... nên nó sẽ chuyển sang dạng mojibake.

Nên bây giờ, mình sẽ config sang utf8.

Config my.cnf

  • Với MacOS đường dẫn: /usr/local/mysql/
  • Với Linux đường dẫn: /etc/mysql/

Sau đó, trong thư mục mysql config file my.cnf theo mẫu dưới:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysqld]
character-set-server=utf8  

Và restart mySQL:

MacOS:  
$ sudo mysql.server restart

Linux:  
$ sudo service mysql restart

Check lại status của mySQL:

Bây giờ, thử insert dữ liệu vào db lần nữa và xem kết quả:

Trên đây, mình vừa giải quyết vấn đề gặp phải với các bạn hay sử dụng ngôn ngữ không phải latin khi làm việc với mySQL.

Related article