Câu trả lời ngắn
Khởi động ứng dụng khách với tùy chọn --default-character-set=utf8
:
mysql --default-character-set=utf8
Bạn có thể đặt cài đặt này làm mặc định trong /etc/mysql/my.cnf
tệp.
[mysql]
default-character-set=utf8
Câu trả lời ngắn không hoạt động, hãy đọc dưới đây
Lệnh trên buộc character_set_client
, character_set_connection
và character_set_results
cấu hình biến thành utf8
.
Để kiểm tra các giá trị cho tất cả các biến cấu hình liên quan đến bộ ký tự, bạn có thể chạy:
show variables like '%char%';
character_set_database
cung cấp cho bạn bộ ký tự của cơ sở dữ liệu (lược đồ) hiện tại mà bạn đang ở trong đó. Lược đồ và bảng được tạo theo mặc định với bộ ký tự được chỉ định trong character_set_server
, trừ khi nó được chỉ định rõ ràng trong CREATE
tuyên bố.
character_set_server
có thể được thay đổi trong my.cnf
tệp:
[mysqld]
character-set-server = utf8
Ngoài ra, các bảng và cột có thể có bộ ký tự riêng có thể khác với bảng hoặc lược đồ mẹ của chúng. Để kiểm tra cụ thể các giá trị của từng bảng và cột trong cơ sở dữ liệu, hãy xem câu trả lời sau: Làm cách nào để xem bộ ký tự của cơ sở dữ liệu / bảng / cột MySQL là gì?
Nếu bạn muốn thay đổi bộ ký tự của các bảng và cột hiện có, hãy xem câu trả lời sau: Làm cách nào để chuyển đổi toàn bộ bộ ký tự và đối chiếu cơ sở dữ liệu MySQL thành UTF-8?
Thông tin thêm về bộ ký tự kết nối trong tài liệu mysql .
Mọi thứ được đặt thành utf8, nhưng tôi vẫn thấy các ký tự kỳ lạ
Ngay cả khi tất cả các biến bộ ký tự, bảng và cột được đặt thành utf8
, có thể có trường hợp bạn nhìn thấy các ký tự kỳ lạ trên màn hình của mình. Ví dụ:ai đó có thể đã viết các ký tự Unicode trong utf8
, thông qua một ứng dụng khách với latin1
kết nối (ví dụ:bằng cách chạy mysql --default-character-set=latin1
). Trong trường hợp này, bạn cần kết nối với cơ sở dữ liệu với cùng một bộ ký tự như các giá trị đã được ghi. Bạn cũng có thể truy xuất và viết lại chúng thông qua mã hóa chính xác.
LƯU Ý :Như các nhận xét đã chỉ ra, mysql utf8
mã hóa không phải là cách triển khai đúng và đầy đủ của UTF-8. Nếu cần triển khai đầy đủ UTF-8, người ta có thể sử dụng utf8mb4
bộ ký tự:
mysql --default-character-set=utf8mb4
Thông tin thêm tại đây: Sự khác biệt giữa bộ ký tự utf8mb4 và utf8 trong MySQL là gì?