Mysql đặt bộ ký tự cho cơ sở dữ liệu

Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về bộ ký tự MySQL. Sau phần hướng dẫn, bạn sẽ biết cách lấy tất cả các bộ ký tự trong MySQL, cách chuyển đổi chuỗi giữa các bộ ký tự và cách định cấu hình bộ ký tự thích hợp cho kết nối máy khách

Giới thiệu về bộ ký tự MySQL

Bộ ký tự MySQL là một bộ ký tự hợp lệ trong một chuỗi. Ví dụ: chúng ta có một bảng chữ cái với các chữ cái từ

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
0  đến z. Chúng tôi gán cho mỗi chữ cái một số, ví dụ:  

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
1, 

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
2, v.v. Chữ cái 

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
0  là ký hiệu và số

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
4  liên kết với chữ cái

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
0  là mã hóa. Sự kết hợp của tất cả các chữ cái từ a đến z và mã hóa tương ứng của chúng là một bộ ký tự.

Mỗi bộ ký tự có một hoặc nhiều đối chiếu xác định một bộ quy tắc để so sánh các ký tự trong bộ ký tự. Hãy xem hướng dẫn đối chiếu MySQL để tìm hiểu về các đối chiếu trong MySQL

MySQL hỗ trợ các bộ ký tự khác nhau cho phép bạn lưu trữ hầu hết mọi ký tự trong một chuỗi. Để lấy tất cả các bộ ký tự có sẵn trong máy chủ cơ sở dữ liệu MySQL, bạn sử dụng câu lệnh 

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
6  như sau

SHOW CHARACTER SET;

Code language: SQL (Structured Query Language) (sql)
Mysql đặt bộ ký tự cho cơ sở dữ liệu
Mysql đặt bộ ký tự cho cơ sở dữ liệu

Bộ ký tự mặc định trong MySQL là

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
7. Nếu bạn muốn lưu trữ các ký tự từ nhiều ngôn ngữ trong một cột, bạn có thể sử dụng bộ ký tự Unicode, đó là

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
8 hoặc

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
9

Các giá trị trong cột

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
0 chỉ định số byte mà một ký tự trong bộ ký tự nắm giữ. Một số bộ ký tự chứa các ký tự byte đơn e. g. ,

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
7 ,

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
2 ,

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
3 , v.v. , trong khi các bộ ký tự khác chứa các ký tự nhiều byte

MySQL cung cấp hàm

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
4 để lấy độ dài của chuỗi theo byte và hàm 

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
5 để lấy độ dài của chuỗi theo ký tự. Nếu một chuỗi chứa ký tự nhiều byte, thì kết quả của hàm 

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
4 lớn hơn kết quả của hàm 

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
7. Xem ví dụ sau

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
Mysql đặt bộ ký tự cho cơ sở dữ liệu
Mysql đặt bộ ký tự cho cơ sở dữ liệu

Hàm

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
8 chuyển đổi một chuỗi thành một bộ ký tự cụ thể. Trong ví dụ này, nó chuyển đổi bộ ký tự của chuỗi

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
9  thành

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
9. Bởi vì bộ ký tự

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
9 chứa các ký tự 2 byte, do đó độ dài của chuỗi

SET @str = CONVERT('pingüino' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
2 tính theo byte lớn hơn độ dài tính theo ký tự của nó.

Lưu ý rằng một số bộ ký tự chứa các ký tự nhiều byte, nhưng các chuỗi của chúng có thể chỉ chứa các ký tự một byte e. g. ,

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
8  như thể hiện trong các tuyên bố sau

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
Mysql đặt bộ ký tự cho cơ sở dữ liệu
Mysql đặt bộ ký tự cho cơ sở dữ liệu

Tuy nhiên, nếu chuỗi

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
8 chứa ký tự đặc biệt e. g. ,

SET @str = CONVERT('pingüino' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
5  trong chuỗi 

SET @str = CONVERT('pingüino' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
6; .

SET @str = CONVERT('pingüino' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)

Mysql đặt bộ ký tự cho cơ sở dữ liệu
Mysql đặt bộ ký tự cho cơ sở dữ liệu

Chuyển đổi giữa các bộ ký tự khác nhau

MySQL cung cấp hai chức năng cho phép bạn chuyển đổi chuỗi giữa các bộ ký tự khác nhau.

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
8 và

SET @str = CONVERT('pingüino' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
8. Chúng tôi đã sử dụng hàm

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
8 nhiều lần trong các ví dụ trên

Cú pháp của hàm

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
8 như sau

CONVERT(expression USING character_set_name)

Code language: SQL (Structured Query Language) (sql)

Hàm

SET @str = CONVERT('pingüino' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
8 tương tự như hàm

SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
8. Nó chuyển đổi một chuỗi thành một bộ ký tự khác

CAST(string AS character_type CHARACTER SET character_set_name)

Code language: SQL (Structured Query Language) (sql)

Hãy xem ví dụ sau về cách sử dụng hàm

CONVERT(expression USING character_set_name)

Code language: SQL (Structured Query Language) (sql)
3

SELECT CAST(_latin1'MySQL character set' AS CHAR CHARACTER SET utf8);

Code language: SQL (Structured Query Language) (sql)

Đặt bộ ký tự cho kết nối máy khách

Khi một ứng dụng trao đổi dữ liệu với máy chủ cơ sở dữ liệu MySQL, bộ ký tự mặc định là

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
7. Tuy nhiên, nếu cơ sở dữ liệu lưu trữ các chuỗi Unicode trong bộ ký tự 

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
8, thì việc sử dụng bộ ký tự 

SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

Code language: SQL (Structured Query Language) (sql)
7 trong ứng dụng sẽ không đủ. Do đó, ứng dụng cần chỉ định bộ ký tự phù hợp khi kết nối với máy chủ cơ sở dữ liệu MySQL

Để cấu hình bộ ký tự cho kết nối máy khách, bạn có thể thực hiện một trong các cách sau

  • Đưa ra câu lệnh

    CONVERT(expression USING character_set_name)

    Code language: SQL (Structured Query Language) (sql)
    7  sau khi máy khách kết nối với máy chủ cơ sở dữ liệu MySQL. Ví dụ: để đặt bộ ký tự Unicode

    SET @str = CONVERT('MySQL Character Set' USING ucs2); SELECT LENGTH(@str), CHAR_LENGTH(@str);

    Code language: SQL (Structured Query Language) (sql)
    8, bạn sử dụng câu lệnh sau

SET NAMES 'utf8';

Code language: SQL (Structured Query Language) (sql)
  • Nếu ứng dụng hỗ trợ tùy chọn

    CONVERT(expression USING character_set_name)

    Code language: SQL (Structured Query Language) (sql)
    9  thì bạn có thể sử dụng tùy chọn này để đặt bộ ký tự. Ví dụ: công cụ máy khách mysql hỗ trợ

    CONVERT(expression USING character_set_name)

    Code language: SQL (Structured Query Language) (sql)
    9  và bạn có thể thiết lập nó trong tệp cấu hình như sau

[mysql] default-character-set=utf8

Code language: JavaScript (javascript)
  • Một số trình kết nối MySQL cho phép bạn đặt bộ ký tự, ví dụ: nếu bạn sử dụng PHP PDO, bạn có thể đặt bộ ký tự trong tên nguồn dữ liệu như sau

$dsn ="mysql:host=$host;dbname=$db;charset=utf8";

Code language: PHP (php)

Bất kể bạn sử dụng cách nào, hãy đảm bảo rằng bộ ký tự mà ứng dụng sử dụng khớp với bộ ký tự được lưu trữ trong máy chủ cơ sở dữ liệu MySQL

Trong hướng dẫn này, bạn đã học về bộ ký tự MySQL, cách chuyển đổi chuỗi giữa các bộ ký tự và cách định cấu hình bộ ký tự thích hợp cho kết nối máy khách

Làm cách nào để thay đổi bộ ký tự cơ sở dữ liệu trong MySQL?

Tương tự, đây là lệnh thay đổi bộ ký tự của bảng MySQL từ latin1 sang UTF8. Thay thế table_name bằng tên bảng cơ sở dữ liệu của bạn. mysql> THAY ĐỔI tên_bảng BẢNG CHUYỂN ĐỔI THÀNH BỘ KÝ TỰ utf8 COLLATE utf8_unicode_ci ; .

Bộ ký tự trong cơ sở dữ liệu MySQL là gì?

Một bộ ký tự trong MySQL là một bộ ký tự, mã hóa và ký hiệu hợp lệ trong một chuỗi . Bài viết này giải thích cách chúng tôi có thể lấy tất cả các bộ ký tự trong MySQL, cách chúng tôi có thể định cấu hình các bộ ký tự thích hợp cho kết nối máy khách và cách chúng tôi có thể chuyển đổi chuỗi giữa nhiều bộ ký tự.

Bộ ký tự cơ sở dữ liệu là gì?

Bộ ký tự là tập hợp các ký hiệu và mã hóa . Đối chiếu là một bộ quy tắc để so sánh các ký tự trong một bộ ký tự.