Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để giải quyết vấn đề mã hóa ký tự MySQL?

Vấn đề mã hóa ký tự MySQL là trong đó cơ sở dữ liệu MySQL của bạn khiến các ký tự UTF8 (như å, ä và ö) bị hiển thị sai. Điều này là do theo mặc định, MySQL sử dụng bộ ký tự latin1. Vấn đề này đã trở nên quan trọng do tính chất toàn cầu của nội dung web ngày nay. Bạn có thể giải quyết nó bằng cách đặt mã hóa ký tự MySQL thành UTF8. Điều này có thể được thực hiện theo nhiều cách.

  1. Chạy truy vấn “SET NAMES‘ utf8 ’” khi bắt đầu mỗi kết nối - điều này sẽ buộc MySQL sử dụng UTF8 trong suốt thời gian tồn tại của kết nối đó. Đây là một lựa chọn tốt nếu bạn không có quyền truy cập vào tệp my.cnf (linux / mac) / my.ini (windows).
  2. Tìm và chỉnh sửa tệp my.cnf (linux / mac) / my.ini (windows) trên máy chủ cơ sở dữ liệu của bạn. Thêm các dòng sau vào mysqld section:[mysqld] default-character-set =utf8 ignore-character-set-client-handshake Bây giờ nếu bạn khởi động lại máy chủ MySQL, mã hóa ký tự MySQL sẽ mặc định thành UTF8
  3. Điều gì xảy ra nếu bạn đã có một cơ sở dữ liệu? Làm cách nào để chuyển đổi nội dung của nó thành UTF8? Bạn có thể sử dụng 3 truy vấn sau. Thay thế DATABASE_NAME, TABLE_NAME và FIELD_NAME bằng các giá trị của bạn. thay đổi bảng TABLE_NAME sửa đổi FIELD_NAME blob; thay đổi cơ sở dữ liệu DATABASE_NAME charset =utf8; bảng thay đổi TABLE_NAME sửa đổi bộ ký tự FIELD_NAME varchar (255) utf8; Chuyển đổi trường thành BLOB, đó là một loại trường nhị phân. Sau đó, chúng tôi thay đổi bộ ký tự của cơ sở dữ liệu thành utf8. Cuối cùng, chúng tôi chuyển đổi trường của mình trở lại văn bản hoặc varchar.

Bạn có thể kiểm tra mã hóa ký tự MySQL của mình bằng truy vấn sau.

Mã hóa ký tự MySQL mặc định

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | latin1                     |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

Mã hóa ký tự MySQL bắt buộc

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/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

Bạn cũng sẽ cần đảm bảo khung lập trình của mình như Django, Code Igniter, v.v. sử dụng mã hóa UTF8.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Chèn bản ghi nếu không tồn tại trong bảng

  2. Cân bằng tải PostgreSQL &Cải tiến ProxySQL - ClusterControl 1.5

  3. Mysql_real_escape_string () và mysql_escape_string () có đủ để bảo mật ứng dụng không?

  4. int (11) so với int (bất kỳ thứ gì khác)

  5. Làm cách nào để bạn kết nối với nhiều cơ sở dữ liệu MySQL trên một trang web?