Cập nhật:
Câu trả lời ngắn gọn - Bạn hầu như luôn sử dụng utf8mb4
bộ ký tự và utf8mb4_unicode_ci
đối chiếu.
Để thay đổi cơ sở dữ liệu:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Xem:
-
Nhận xét của Aaron về câu trả lời này Cách thực hiện làm cho MySQL xử lý UTF-8 đúng cách
-
Hướng dẫn chuyển đổi: https://dev.mysql. com / doc / refman / 5.5 / en / charset-unicode-convert.html
Câu trả lời ban đầu:
MySQL 4.1 trở lên có bộ ký tự mặc định là UTF-8. Bạn có thể xác minh điều này trong my.cnf
của mình , hãy nhớ đặt cả hai máy khách và máy chủ (default-character-set
và character-set-server
).
Nếu bạn có dữ liệu hiện có mà bạn muốn chuyển đổi sang UTF-8, hãy kết xuất cơ sở dữ liệu của bạn và nhập lại dưới dạng UTF-8 để đảm bảo:
- sử dụng
SET NAMES utf8
trước khi bạn truy vấn / chèn vào cơ sở dữ liệu - sử dụng
DEFAULT CHARSET=utf8
khi tạo bảng mới - tại thời điểm này, máy khách và máy chủ MySQL của bạn phải ở dạng UTF-8 (xem
my.cnf
). hãy nhớ rằng bất kỳ ngôn ngữ nào bạn sử dụng (chẳng hạn như PHP) cũng phải là UTF-8. Một số phiên bản PHP sẽ sử dụng thư viện máy khách MySQL của riêng chúng, thư viện này có thể không nhận biết được UTF-8.
Nếu bạn muốn di chuyển dữ liệu hiện có, hãy nhớ sao lưu trước! Rất nhiều dữ liệu có thể xảy ra khi mọi thứ không diễn ra như kế hoạch!
Một số tài nguyên:
- hoàn tất quá trình di chuyển UTF-8 (cdbaby.com)
- bài viết về UTF-8 sẵn sàng của các hàm php (lưu ý rằng một số thông tin này đã lỗi thời)