Kiểm tra bộ ký tự mysql

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ự

Hãy để chúng tôi hiểu nó với ví dụ về một bộ ký tự tưởng tượng. Giả sử chúng ta có bảng chữ cái từ A đến B, hoặc a đến b. Tiếp theo, chúng tôi sẽ gán một số cho mỗi chữ cái. A = 0, B = 1. Ở đây, chữ A hoặc B là ký hiệu, còn số 0 hoặc 1 là mã hóa. Chúng tôi gọi sự kết hợp của các chữ cái này (A đến B hoặc a đến b) và mã hóa liên quan của chúng là một bộ ký tự

Một lần nữa, nếu chúng ta muốn so sánh giữa hai giá trị chuỗi, ví dụ: A và B. Cách đơn giản nhất để thực hiện việc này bằng cách sử dụng mã hóa của chúng là 0 cho A và 1 cho B. Từ bảng mã, rõ ràng 0 nhỏ hơn 1 nên ta có thể nói A nhỏ hơn B

MySQL hỗ trợ nhiều bộ ký tự khác nhau và mỗi bộ ký tự luôn sử dụng ít nhất một đối chiếu. Đối chiếu xác định bộ quy tắc để so sánh các ký tự trong bộ ký tự. Các bộ ký tự cho phép chúng ta lưu trữ bất kỳ ký tự nào trong một chuỗi. Chúng ta có thể sử dụng câu lệnh dưới đây để xem tất cả các bộ ký tự có sẵn trong máy chủ cơ sở dữ liệu MySQL

Nó sẽ trả về đầu ra sau

Kiểm tra bộ ký tự mysql

Theo mặc định, câu lệnh trên tạo ra tất cả các bộ ký tự có sẵn trong MySQL. Nếu chúng tôi muốn lấy tên của bất kỳ họ bộ ký tự cụ thể nào, hãy sử dụng mệnh đề LIKE hoặc WHERE tùy chọn trả về tên bộ ký tự phù hợp. Câu lệnh dưới đây hiển thị một số bộ ký tự Unicode dựa trên UTF (Định dạng chuyển đổi Unicode)

Chúng ta có thể thấy đầu ra như sau

Kiểm tra bộ ký tự mysql

Trong hình ảnh này, các giá trị trong cột Maxlen biểu thị số byte chứa một ký tự trong bộ ký tự. Mọi bộ ký tự trong MySQL đều chứa ký tự một byte chẳng hạn như ký tự latin1, latin2, cp850 hoặc ký tự nhiều byte

latin1 là một bộ ký tự mặc định được sử dụng trong MySQL. Nếu chúng tôi lưu trữ các ký tự hoặc ký hiệu từ nhiều ngôn ngữ khác nhau trong một cột, chúng tôi sẽ sử dụng các bộ ký tự Unicode như utf8 hoặc ucs2

Hàm LENGTH() của MySQL trả về độ dài của chuỗi theo byte và hàm CHAR_LENGTH() được sử dụng để tìm độ dài của chuỗi theo ký tự. Nếu chúng ta sử dụng hàm LENGTH() để tính độ dài của chuỗi chứa ký tự nhiều byte, chúng ta sẽ nhận được kết quả cao hơn kết quả của hàm CHAR_LENGTH(). Ví dụ sau giải thích rõ hơn về việc sử dụng bộ ký tự ucs2

Chúng ta có thể thấy đầu ra như sau, trong đó hàm LENGTH trả về kết quả lớn hơn kết quả của hàm CHAR_LENGTH()

Kiểm tra bộ ký tự mysql

Hàm CONVERT được sử dụng để chuyển đổi một chuỗi thành một bộ ký tự cụ thể. Ví dụ trên chuyển đổi chuỗi Bộ ký tự MySQL thành bộ ký tự ucs2. Vì bộ ký tự ucs2 chứa các ký tự hai byte nên độ dài của @str tính bằng byte lớn hơn độ dài của nó tính bằng ký tự

Một lần nữa, chúng ta sẽ thấy một ví dụ khác. Cần lưu ý rằng nhiều bộ ký tự chứa các ký tự nhiều byte, nhưng các chuỗi của chúng chỉ chứa các ký tự một byte, chẳng hạn như utf8, như được hiển thị trong các câu lệnh bên dưới

Chúng ta có thể thấy đầu ra như sau

Kiểm tra bộ ký tự mysql

Tuy nhiên, nếu chuỗi utf8 của bộ ký tự chứa bất kỳ ký tự đặc biệt nào, thì độ dài tính bằng byte của nó sẽ khác. Xem ví dụ bên dưới

Ta sẽ được kết quả như bên dưới

Kiểm tra bộ ký tự mysql

Chuyển đổi bộ ký tự

MySQL cung cấp chủ yếu hai hàm để thực hiện chuyển đổi chuỗi giữa các bộ ký tự khác nhau. Các hàm này là CONVERT() và CAST(). Chúng ta đã thấy hoạt động của hàm CONVERT trong các ví dụ trên. Ở đây, chúng ta sẽ chỉ thấy chức năng CAST hoạt động tương tự như chức năng CONVERT

Sau đây là cú pháp cơ bản của hàm CONVERT()

Sau đây là cú pháp cơ bản của hàm CAST()

Xem ví dụ dưới đây sử dụng hàm CAST để thực hiện chuyển đổi giữa các bộ ký tự khác nhau

Nó sẽ trả về đầu ra như sau

Kiểm tra bộ ký tự mysql

Cấu hình bộ ký tự cho kết nối máy khách

Khi ứng dụng cơ sở dữ liệu trao đổi dữ liệu với máy chủ MySQL, nó sẽ sử dụng bộ ký tự mặc định có tên latin1. Nếu ứng dụng lưu trữ các chuỗi Unicode trong bộ ký tự UTF8, thì bộ ký tự mặc định latin1 trong ứng dụng cơ sở dữ liệu có thể không đủ. Do đó, cần phải chỉ định một bộ ký tự phù hợp khi ứng dụng của chúng tôi kết nối với máy chủ cơ sở dữ liệu MySQL

Chúng tôi có thể định cấu hình bộ ký tự cho các kết nối máy khách bằng một trong các cách sau

  • Chúng ta có thể sử dụng lệnh SET NAMES khi máy khách kết nối với máy chủ cơ sở dữ liệu MySQL. Ví dụ: nếu có nhu cầu đặt bộ ký tự Unicode UTF8MB4 cho các kết nối máy khách, chúng tôi sẽ sử dụng câu lệnh sau
  • Trong MySQL, có một số bộ ký tự khác được cung cấp bởi các trình kết nối MySQL. Giả sử nếu chúng ta đang sử dụng PHP PDO, thì chúng ta có thể đặt bộ ký tự trong tên nguồn dữ liệu như câu lệnh sau
  • Chúng tôi cũng có thể sử dụng để đặt bộ ký tự nếu ứng dụng cơ sở dữ liệu của chúng tôi hỗ trợ tùy chọn --default-character-set. Ví dụ: MySQL Client Tool luôn hỗ trợ tùy chọn này và câu lệnh bên dưới có thể được sử dụng để đặt nó trong tệp cấu hình như sau

Đó là để đảm bảo rằng cách chúng tôi đang sử dụng, bộ ký tự được sử dụng bởi ứng dụng cơ sở dữ liệu của chúng tôi phải khớp với bộ ký tự được lưu trữ trong máy chủ MySQL

Làm cách nào để kiểm tra bộ ký tự cột trong MySQL?

Để tìm bộ ký tự cho cơ sở dữ liệu, đây là cú pháp. CHỌN default_character_set_name TỪ information_schema. SCHEMATA WHERE schema_name = "yourDatabaseName" ; .

Bộ ký tự trong 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ự.

Làm cách nào để kiểm tra bộ ký tự cơ sở dữ liệu trong SQL Server?

Có thể chạy lệnh T-SQL nào để tìm bộ ký tự của bảng hoặc cơ sở dữ liệu trong SQL Server?

Liệu MySQL 5. 7 hỗ trợ utf8mb4_0900_ai_ci?

utf8mb4_0900_ai_ci chỉ được triển khai kể từ MySQL 8. 0 nên 5. 7 máy chủ không nhận ra nó . Bởi vì 5. 7 không nhận ra utf8mb4_0900_ai_ci , nó không thể đáp ứng yêu cầu bộ ký tự của máy khách và quay lại bộ ký tự và đối chiếu mặc định của nó ( latin1 và latin1_swedish_ci ).