Hướng dẫn does mysql support utf - mysql có hỗ trợ utf không
10.10.1 & NBSP; Bộ ký tự UnicodePhần này mô tả các đối chiếu có sẵn cho các bộ ký tự Unicode và các thuộc tính khác biệt của chúng. Để biết thông tin chung về Unicode, xem Phần & NBSP; 10.9, hỗ trợ Unicode của Unicode. MySQL hỗ trợ nhiều bộ ký tự Unicode:
Ghi chú Bộ ký tự 6 không được chấp nhận và bạn nên hy vọng nó sẽ bị xóa trong bản phát hành MySQL trong tương lai. Vui lòng sử dụng 5 thay thế. 8 hiện là bí danh đối với 6, nhưng hiện tại nó không được chấp nhận như vậy, và 8 dự kiến sau đó sẽ trở thành một tài liệu tham khảo cho 5. Bắt đầu với MySQL 8.0.28, 6 cũng được hiển thị thay cho 8 trong các cột của các bảng lược đồ thông tin và trong đầu ra của các câu lệnh SQL 7.Để tránh sự mơ hồ về ý nghĩa của 8, hãy xem xét chỉ định 5 một cách rõ ràng cho các tài liệu tham khảo tập hợp nhân vật.
5, 4, 6 và 8 Hỗ trợ các ký tự đa ngôn ngữ cơ bản (BMP) và các ký tự bổ sung nằm bên ngoài BMP. 6 và 3 chỉ hỗ trợ các ký tự BMP.Hầu hết các bộ ký tự Unicode đều có một đối chiếu chung (được biểu thị bằng 6 trong tên hoặc do không có trình xác định ngôn ngữ), đối chiếu nhị phân (được biểu thị bằng 7 trong tên) và một số đối chiếu cụ thể về ngôn ngữ (được biểu thị bằng các chỉ định ngôn ngữ). Ví dụ, đối với 5, 9 và 0 là các cộng đồng chung và nhị phân của nó, và 1 là một trong những đối chiếu cụ thể về ngôn ngữ.Hầu hết các bộ ký tự có một đối chiếu nhị phân duy nhất. 5 là một ngoại lệ có hai: 0 và (kể từ MySQL 8.0.17) 4. Hai đối chiếu nhị phân này có cùng thứ tự sắp xếp nhưng được phân biệt bằng thuộc tính PAD của chúng và đối chiếu các đặc điểm trọng lượng. Xem các thuộc tính pad đối chiếu, và trọng số đối chiếu ký tự.Hỗ trợ đối chiếu cho 6 bị hạn chế. Các đối chiếu duy nhất có sẵn là 6 và 7. Chúng tương tự như 8 và 9.
Phiên bản thuật toán đối chiếu Unicode (UCA)Thuộc tính pad đối chiếu Đối chiếu cụ thể về ngôn ngữ
Thông tin linh tinh Thuộc tính pad đối chiếuCác đối chiếu dựa trên UCA 9.0.0 trở lên nhanh hơn so với các đối chiếu dựa trên các phiên bản UCA trước 9.0.0. Họ cũng có một thuộc tính PAD của 7, trái ngược với 8 như được sử dụng trong các đối chiếu dựa trên các phiên bản UCA trước 9.0.0. Để so sánh các chuỗi không phải là các chuỗi, 7 đối xử không gian ở cuối chuỗi như bất kỳ nhân vật nào khác (xem xử lý không gian theo dõi trong so sánh).Để xác định thuộc tính PAD cho một đối chiếu, hãy sử dụng bảng 0 1, có cột 2. Ví dụ:
So sánh các giá trị chuỗi không phân biệt ( 3, 4 và 5) có đối chiếu 7 khác với các đối chiếu khác đối với các không gian theo dõi. Ví dụ: 7 và 8 so sánh dưới dạng các chuỗi khác nhau, không phải cùng một chuỗi. Điều này có thể được nhìn thấy bằng cách sử dụng các đối chiếu nhị phân cho 5. Thuộc tính PAD cho 0 là 1, trong khi đối với 4 là 3. Do đó, các hoạt động liên quan đến 4 không thêm không gian theo dõi và các so sánh liên quan đến các chuỗi với không gian dấu vết có thể khác nhau đối với hai đối thủ:
Đối chiếu cụ thể về ngôn ngữMySQL thực hiện các đối chiếu Unicode dành riêng cho ngôn ngữ nếu việc đặt hàng chỉ dựa trên thuật toán đối chiếu Unicode (UCA) không hoạt động tốt cho ngôn ngữ. Các đối chiếu cụ thể về ngôn ngữ là dựa trên UCA, với các quy tắc điều chỉnh ngôn ngữ bổ sung. Ví dụ về các quy tắc như vậy xuất hiện sau trong phần này. Đối với các câu hỏi về thứ tự ngôn ngữ cụ thể, unicode.org cung cấp các biểu đồ đối chiếu dữ liệu địa phương (CLDR) phổ biến tại http://www.unicode.org/cldr/charts/30/collation/index.html. Ví dụ: 4 đặc trưng cho ngôn ngữ 6_0900_AI_CI Unicode Collations mỗi người có những đặc điểm này:
Tên đối chiếu bao gồm mã địa phương hoặc tên ngôn ngữ được hiển thị trong bảng sau là đối chiếu cụ thể về ngôn ngữ. Các bộ ký tự Unicode có thể bao gồm các đối chiếu cho một hoặc nhiều ngôn ngữ này. Bảng & nbsp; 10.3 & nbsp; các nhà xác định ngôn ngữ đối chiếu Unicode
MySQL 8.0.30 và sau đó cung cấp các đối chiếu Bulgaria 43 và 44.Các đối chiếu Croatia được thiết kế cho các chữ cái Croatia này: 45, 46, 47, 48, 49, 50, 51, 52.MySQL 8.0.30 và sau đó cung cấp các đối chiếu 53 và 54 cho tiếng Serbia và 55 và 56 đối với tiếng Bosnian, khi các ngôn ngữ này được viết bằng bảng chữ cái Latin.Bắt đầu với MySQL 8.0.30, MySQL cung cấp các bản thu thập cho cả hai loại chính của Na Uy: Đối với Bokmål, bạn có thể sử dụng 57 và 58; Đối với Nynorsk, MySQL hiện cung cấp 59 và 60.Đối với người Nhật, bộ ký tự 5 bao gồm các đối chiếu 62 và 63. Cả hai đối chiếu đều nhạy cảm với điểm nhấn và nhạy cảm trường hợp. 63 cũng nhạy cảm với Kana và phân biệt các nhân vật Katakana với các nhân vật Hiragana, trong khi 62 đối xử với các nhân vật Katakana và Hiragana bằng nhau để sắp xếp. Các ứng dụng yêu cầu đối chiếu Nhật Bản nhưng không nhạy cảm với Kana có thể sử dụng 62 để có hiệu suất sắp xếp tốt hơn. 62 sử dụng ba mức trọng lượng để phân loại; 63 sử dụng bốn.Đối với các đối chiếu Latin cổ điển không nhạy cảm với điểm nhấn, 69 và 70 so sánh là bằng nhau, và 71 và 72 so sánh bằng nhau. 69 và 70, và 71 và 72 so sánh bằng nhau trên cấp độ chữ cái cơ sở. Nói cách khác, 70 được coi là một điểm nhấn 69 và 71 được coi là một điểm nhấn 72.MySQL 8.0.30 và sau đó cung cấp các đối chiếu cho ngôn ngữ Mông Cổ khi được viết bằng các ký tự Cyrillic, 81 và 82.Đối chiếu Tây Ban Nha có sẵn cho tiếng Tây Ban Nha hiện đại và truyền thống. Đối với cả hai, 83 (N-Tilde) là một chữ cái riêng biệt giữa 84 và 85. Ngoài ra, đối với tiếng Tây Ban Nha truyền thống, 86 là một lá thư riêng biệt giữa 87 và 88 và 89 là một lá thư riêng biệt giữa 90 và 91.Các đối chiếu truyền thống của Tây Ban Nha cũng có thể được sử dụng cho Asturian và Galicia. Bắt đầu với MySQL 8.0.30, MySQL cũng cung cấp các đối chiếu 92 và 93 cho Galicia. (Đây là các đối chiếu giống như 94 và 95, tương ứng.)Các đối chiếu Thụy Điển bao gồm các quy tắc Thụy Điển. Ví dụ, bằng tiếng Thụy Điển, mối quan hệ sau đây không phải là điều mà một người nói tiếng Đức hoặc người Pháp mong đợi:
_General_Ci so với _unicode_ci CollationsĐối với bất kỳ bộ ký tự Unicode nào, các hoạt động được thực hiện bằng cách sử dụng đối chiếu 0_General_CI nhanh hơn so với các hoạt động đối với đối chiếu 0_UNICODE_CI. Ví dụ, so sánh cho đối chiếu 9 nhanh hơn, nhưng hơi ít hơn, so với so sánh cho 99. Lý do là 99 hỗ trợ các ánh xạ như mở rộng; Đó là, khi một ký tự so sánh bằng sự kết hợp của các ký tự khác. Ví dụ, 01 bằng 02 trong tiếng Đức và một số ngôn ngữ khác. 99 cũng hỗ trợ các ký tự co thắt và các ký tự không thể tin được. 9 là một đối chiếu kế thừa không hỗ trợ mở rộng, co thắt hoặc ký tự không thể tin được. Nó chỉ có thể thực hiện so sánh một-một giữa các ký tự.Để minh họa thêm, các công bằng sau đây giữ trong cả 9 và 99 (để có hiệu lực của điều này trong so sánh hoặc tìm kiếm, xem Phần & NBSP; 10.8.6, Ví dụ về hiệu ứng của đối chiếu):
Một sự khác biệt giữa các đối chiếu là điều này đúng với 9:
Trong khi điều này đúng với 99, hỗ trợ đặt hàng DIN-1 của Đức (còn được gọi là trật tự từ điển):
MySQL thực hiện các đối chiếu Unicode dành riêng cho ngôn ngữ nếu việc đặt hàng với 99 không hoạt động tốt cho một ngôn ngữ. Ví dụ, 99 hoạt động tốt cho trật tự từ điển của Đức và tiếng Pháp, do đó không cần phải tạo ra các đối chiếu 5 đặc biệt.
9 cũng thỏa đáng đối với cả Đức và tiếng Pháp, ngoại trừ 01 bằng 14, và không phải là 02. Nếu điều này được chấp nhận cho ứng dụng của bạn, bạn nên sử dụng 9 vì nó nhanh hơn. Nếu điều này không được chấp nhận (ví dụ: nếu bạn yêu cầu đặt hàng từ điển của Đức), hãy sử dụng 99 vì nó chính xác hơn.Nếu bạn yêu cầu đặt hàng DIN-2 (danh bạ điện thoại) của Đức, hãy sử dụng đối chiếu 18, so sánh các bộ ký tự sau đây như nhau:
18 tương tự như 20, nhưng cái sau không so sánh 21 bằng 22 hoặc 23 bằng 24. Không có 25 tương ứng với 26 cho trật tự từ điển của Đức vì 9 đủ.Nhân vật đối chiếu trọng lượngTrọng lượng đối chiếu của một nhân vật được xác định như sau:
Trọng lượng đối chiếu có thể được hiển thị bằng hàm 34. . tổ hợp:“new” character), collating weight determination becomes more complex:
Có một sự khác biệt giữa việc đặt hàng của người khác theo giá trị mã của nhân vật và đặt hàng theo biểu diễn nhị phân của nhân vật, một sự khác biệt chỉ xuất hiện với 9, vì người thay thế.“ordering by the character's code value” and “ordering by the character's binary representation,” a difference that appears only with 9, because
of surrogates. Giả sử rằng 9 (đối chiếu nhị phân cho 4) là một so sánh nhị phân Byte byte bởi byte, chứ không phải là nhân vật của nhân vật. Nếu đó là như vậy, thứ tự của các ký tự trong 9 sẽ khác với thứ tự trong 0. Ví dụ, biểu đồ sau đây cho thấy hai ký tự hiếm. Nhân vật đầu tiên nằm trong phạm vi ____ ____ 262 -____ ____ 263, vì vậy nó lớn hơn một người thay thế nhưng ít hơn một bổ sung. Nhân vật thứ hai là một bổ sung.“byte by byte” rather than “character by character.” If that were so, the order of characters in 9 would differ from the order in 0. For example, the following chart shows two rare characters. The first character is in the range 62- 63, so it is greater than a surrogate but less than a supplementary. The second
character is a supplementary. 4The two characters in the chart are in order by code point value because 64 < 65. And they are in order by 5 value because 67 < 68. But they are not in order by 4 value, if we use byte-by-byte comparison, because 70 > 71. Vì vậy, đối chiếu 9 của MySQL không phải là byte bởi byte. Đó là một điểm của Code Point. Khi MySQL thấy mã hóa ký tự bổ sung trong 4, nó chuyển đổi thành giá trị điểm mã của nhân vật, và sau đó so sánh. Do đó, 0 và 9 là cùng một thứ tự. Điều này phù hợp với yêu cầu tiêu chuẩn SQL: 2008 đối với đối chiếu UCS_BASIC: UCS_Basic là một đối chiếu trong đó đặt hàng được xác định hoàn toàn bằng các giá trị vô hướng Unicode của các ký tự trong các chuỗi được sắp xếp. Nó được áp dụng cho các tiết mục nhân vật UCS. Vì mỗi tiết mục nhân vật là một tập hợp con của tiết mục UCS, nên sự đối chiếu UCS_BASIC có khả năng áp dụng cho mọi bộ ký tự. Lưu ý 11: Giá trị vô hướng Unicode của ký tự là điểm mã của nó được coi là một số nguyên không dấu.“byte by byte.” It is “by code point.” When MySQL sees a
supplementary-character encoding in 4, it converts to the character's code-point value, and then compares. Therefore, 0 and 9 are the same ordering. This is consistent with the SQL:2008 standard requirement for a UCS_BASIC collation: “UCS_BASIC is a collation in which the ordering is determined entirely by the Unicode scalar values of the characters in the strings being sorted. It is applicable to the UCS character repertoire. Since every character repertoire is
a subset of the UCS repertoire, the UCS_BASIC collation is potentially applicable to every character set. NOTE 11: The Unicode scalar value of a character is its code point treated as an unsigned integer.”Nếu bộ ký tự là 3, so sánh là byte-byte, nhưng dù sao thì chuỗi ____23 không nên chứa chất thay thế.Thông tin linh tinhCác đối chiếu 0_General_MysQL500_CI bảo tồn thứ tự trước 5.1.24 của các đối chiếu 0_General_CI ban đầu và cho phép nâng cấp cho các bảng được tạo trước MySQL 5.1.24 (Bug #27877). |