Máy chủ MySQL có bộ và đối chiếu ký tự mặc định được biên dịch. Để thay đổi các mặc định này, hãy sử dụng các tùy chọn
Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
3 và Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
4 khi bạn khởi động máy chủ. Xem Phần & NBSP; 5.1.7, Tùy chọn lệnh máy chủ của Cameron. Việc đối chiếu phải là một đối chiếu pháp lý cho bộ ký tự mặc định. Để xác định các đối chiếu nào có sẵn cho mỗi bộ ký tự, hãy sử dụng câu lệnh Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
5 hoặc truy vấn bảng Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
6 Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
7.Nếu bạn cố gắng sử dụng một bộ ký tự không được biên dịch vào nhị phân của bạn, bạn có thể gặp phải các vấn đề sau:
Nếu chương trình của bạn sử dụng đường dẫn không chính xác để xác định vị trí bộ ký tự được lưu trữ [thường là thư mục
8 hoặcCharacter set 'charset_name' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
9 trong thư mục cài đặt MySQL], điều này có thể được sửa bằng cách sử dụng tùy chọnCharacter set 'charset_name' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
0 khi bạn chạy chương trình. Ví dụ: để chỉ định một thư mục sẽ được sử dụng bởi các chương trình máy khách MySQL, hãy liệt kê nó trong nhóm[client] default-character-set=charset_name
1 của tệp tùy chọn của bạn. Các ví dụ được đưa ra ở đây cho thấy cài đặt có thể trông như thế nào đối với Unix hoặc Windows, tương ứng:[client] default-character-set=charset_name
[client] character-sets-dir=/usr/local/mysql/share/mysql/charsets [client] character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.0/share/charsets"
Nếu bộ ký tự là một bộ ký tự phức tạp không thể được tải động, bạn phải biên dịch lại chương trình với sự hỗ trợ cho bộ ký tự.
Đối với các bộ ký tự unicode, bạn có thể xác định các đối chiếu mà không cần biên dịch lại bằng cách sử dụng ký hiệu LDML. Xem Phần & NBSP; 10.14.4, Thêm một đối chiếu UCA vào một ký tự Unicode.
Nếu bộ ký tự là bộ ký tự động, nhưng bạn không có tệp cấu hình cho nó, bạn nên cài đặt tệp cấu hình cho bộ ký tự từ phân phối MySQL mới.
Nếu tệp chỉ mục đặt ký tự của bạn [
2] không chứa tên cho bộ ký tự, chương trình của bạn sẽ hiển thị thông báo lỗi:[client] default-character-set=charset_name
Character set 'charset_name' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
Để giải quyết vấn đề này, bạn nên lấy một tệp chỉ mục mới hoặc thêm tên của bất kỳ bộ ký tự bị thiếu nào vào tệp hiện tại.
Bạn có thể buộc các chương trình khách hàng sử dụng bộ ký tự cụ thể như sau:
[client]
default-character-set=charset_name
Điều này thường không cần thiết. Tuy nhiên, khi
[client]
default-character-set=charset_name
3 khác với [client]
default-character-set=charset_name
4 hoặc [client]
default-character-set=charset_name
5 và bạn nhập các ký tự theo cách thủ công [dưới dạng định danh đối tượng cơ sở dữ liệu, giá trị cột hoặc cả hai], chúng có thể được hiển thị không chính xác trong đầu ra từ máy khách hoặc đầu ra có thể được hình thành không chính xác. Trong những trường hợp như vậy, bắt đầu ứng dụng khách MySQL với ____ ____ 26, nghĩa là, đặt ký tự máy khách được đặt để phù hợp với bộ ký tự hệ thống, sẽ khắc phục sự cố. Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu về bộ nhân vật MySQL. Sau 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 các bộ ký tự phù hợp cho các kết nối máy khách.: in this tutorial, you will learn about MySQL character set. After the tutorial, you will know how to get all character sets in MySQL, how to convert strings between character sets, and how to configure proper character sets for client connections.
Một bộ ký tự MySQL là một tập hợp các ký tự hợp pháp trong một chuỗi. Ví dụ: chúng tôi có một bảng chữ cái với các chữ cái từ
[client]
default-character-set=charset_name
7 & nbsp; cho Z.we gán cho mỗi chữ cái một số, ví dụ, & nbsp; ____ ____ 28, & nbsp; ________ 29, v.v. [client]
default-character-set=charset_name
7 & nbsp; là một biểu tượng và số 1 & nbsp; liên kết với chữ cáiCode language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
[client]
default-character-set=charset_name
7 & nbsp; là mã hóa. Sự kết hợp của tất cả các chữ cái từ A đến Z và của họ & NBSP; tương ứng & nbsp; mã hóa & nbsp; là một bộ ký tự.z.We assign each letter
a number, for example, [client]
default-character-set=charset_name
8, [client]
default-character-set=charset_name
9 etc. The letter [client]
default-character-set=charset_name
7 is a symbol, and the number 1 that associates with the letterCode language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
[client]
default-character-set=charset_name
7 is the encoding. The combination of all letters from a to z and their corresponding encodings is a character set.Mỗi bộ ký tự có một hoặc nhiều đối chiếu xác định một tập hợp các quy tắc để so sánh các ký tự trong bộ ký tự. Kiểm tra nó ra & nbsp; hướng dẫn của MySQL & NBSP; để 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 chuỗi. & NBSP; Để có 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 & nbsp; ____ 33 & nbsp;
ký tự mặc định được đặt trong MySQL là
SHOW CHARACTER SET;
Code language: SQL [Structured Query Language] [sql]
4. Nếu bạn muốn lưu trữ các ký tự từ nhiều ngôn ngữ trong một cột duy nhất, bạn có thể sử dụng các bộ ký tự Unicode, đó làCode language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
5 hoặcCode language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
6.Code language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
The default character set in MySQL is
4. If you want to store characters from multiple languages in a single column, you can use Unicode character sets, which isCode language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
5 orCode language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
6.Code language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
Các giá trị trong cột
7 chỉ định số byte mà một ký tự trong một bộ ký tự giữ. Một số bộ ký tự chứa các ký tự một byte, ví dụ:Code language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
4,Code language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
9,Code language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
0, v.v., trong khi các bộ ký tự khác chứa các ký tự đa byte.Code language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
MySQL cung cấp chức năng
1 để có độ dài của một chuỗi trong byte và hàm & nbsp; ________ 42 để có độ dài của một chuỗi trong các ký tự. Nếu một chuỗi chứa ký tự đa byte, kết quả của hàm & nbsp; ________ 41 lớn hơn kết quả của hàm & nbsp; ____ 44. Xem ví dụ sau:HàmCode language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
THECode language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
5 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ỗiCode language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
6 & nbsp; thànhCode language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
6. Bởi vì bộ ký tựCode language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
6 chứa các ký tự 2 byte, do đó độ dài của chuỗiCode language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
9 & nbsp; byte lớn hơn độ dài của nó trong các ký tự.
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
Code language: SQL [Structured Query Language] [sql]
The
5 function converts a string into a specific character set. In this example, it converts the character set of theCode language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
6 string intoCode language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
6 . BecauseCode language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
6 character set contains 2-byte characters, therefore the length of theCode language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
9 string in bytes is greater than its length in characters.Code language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
Lưu ý rằng một số bộ ký tự chứa các ký tự đa byte, & nbsp; Nhưng chuỗi của chúng có thể chỉ chứa các ký tự một byte, ví dụ:
5 & nbsp; như được hiển thị trong các câu sau:Code language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
However, nếu chuỗiCode language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING utf8]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
5 chứa ký tự đặc biệt, ví dụ:Code language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
2 & nbsp; trong & nbsp; ________ 53String; Độ dài của nó tính bằng byte là khác nhau, xem ví dụ sau:Code language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING utf8]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
However, if a
5 string contains special character e.g.,Code language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
2 in theCode language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING utf8]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
3string; its length in bytes is different, see the following example:Code language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING utf8]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
Code language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['pingüino' USING utf8]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
Chuyển đổi giữa các bộ ký tự khác nhau
MySQL cung cấp hai hàm cho phép bạn chuyển đổi chuỗi giữa các bộ ký tự khác nhau:
5 và ________ 55. & nbsp; Chúng tôi đã sử dụng hàmCode language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
5 nhiều lần trong các ví dụ trên.Code language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
Cú pháp của hàm
5 như sau:
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
Code language: SQL [Structured Query Language] [sql]
Code language: SQL [Structured Query Language] [sql]
CONVERT[expression USING character_set_name]
Hàm
5 tương tự như hàmCode language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING utf8]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
5. Nó chuyển đổi một chuỗi thành một bộ ký tự khác:Code language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['MySQL Character Set' USING ucs2]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
Code language: SQL [Structured Query Language] [sql]
CAST[string AS character_type CHARACTER SET character_set_name]
Hãy xem ví dụ sau đây về việc sử dụng hàm
0:Code language: SQL [Structured Query Language] [sql]
SET @str = CONVERT['pingüino' USING utf8]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
Code language: SQL [Structured Query Language] [sql]
SELECT CAST[_latin1'MySQL character set' AS CHAR CHARACTER SET utf8];
Đặt bộ ký tự cho các 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à
4. Tuy nhiên, nếu cơ sở dữ liệu lưu trữ các chuỗi unicode trong bộ ký tự & nbsp; ____ 35, sử dụng & nbsp; ________ 34 được đặt trong ứng dụng sẽ không đủ. Do đó, ứng dụng cần chỉ định một bộ ký tự phù hợp khi nó kết nối với máy chủ cơ sở dữ liệu MySQL.Code language: SQL [Structured Query Language] [sql]
SHOW CHARACTER SET;
Để định 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:
- Phát hành câu lệnh
4 & NBSP; sau khi khách hàng kết nối với máy chủ cơ sở dữ liệu MySQL. Ví dụ: để đặt một bộ ký tự Unicode
Code language: SQL [Structured Query Language] [sql]SET @str = CONVERT['pingüino' USING utf8]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
5, bạn sử dụng câu lệnh sau:
Code language: SQL [Structured Query Language] [sql]SHOW CHARACTER SET;
Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
0- Nếu ứng dụng hỗ trợ tùy chọn
6 & NBSP;, bạn có thể sử dụng nó để đặt bộ ký tự. Ví dụ: Công cụ máy khách MySQL hỗ trợ
Code language: SQL [Structured Query Language] [sql]SET @str = CONVERT['pingüino' USING utf8]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
6 & nbsp; và bạn có thể đặt nó trong tệp cấu hình như sau:
Code language: SQL [Structured Query Language] [sql]SET @str = CONVERT['pingüino' USING utf8]; SELECT LENGTH[@str], CHAR_LENGTH[@str];
Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
1- Một số đầu 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:
Character set 'charset_name' is not a compiled character set and is not
specified in the '/usr/share/mysql/charsets/Index.xml' file
2Bất kể bạn sử dụng theo cách nào, hãy đảm bảo rằng bộ ký tự được sử dụng bởi ứng 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 đã tìm hiểu 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 các bộ ký tự phù hợp cho các kết nối máy khách.
Hướng dẫn này có hữu ích không?