Tôi muốn có một collation mà lệnh mã hóa UTF-8 0x1234 dưới 0x1235 bất kể bản đồ ký tự trong tiêu chuẩn Unicode. MySQL sử dụng utf8_bin cho việc này. MSSQL dường như http://msdn.microsoft.com/en-us/library/ms143350.aspx có collations BIN và BIN2. Trong khi việc tìm kiếm chúng thật dễ dàng, tôi thậm chí không thể tìm thấy danh sách collations PostgreSQL hỗ trợ câu trả lời ít hơn nhiều cho câu hỏi cụ thể này.PostgreSQL UTF-8 collation nhị phân
Trả lời
Miền địa phương C sẽ thực hiện. UTF-8 được thiết kế sao cho thứ tự byte cũng được đặt theo thứ tự codepoint. Đây không phải là tầm thường nhưng xem xét mức độ UTF-8 hoạt động:
Number range Byte 1 Byte 2 Byte 3 0000-007F 0xxxxxxx 0080-07FF 110xxxxx 10xxxxxx 0800-FFFF 1110xxxx 10xxxxxx 10xxxxxx
Khi sắp xếp dữ liệu nhị phân aka C miền địa phương, các byte không bình đẳng đầu tiên sẽ etermine orering. Những gì chúng tôi neeed để thấy rằng nếu hai số được mã hóa thành UTF-8 khác nhau thì byte không bằng nhau đầu tiên sẽ thấp hơn cho giá trị thấp hơn. Nếu các số nằm trong các phạm vi khác nhau thì byte đầu tiên thực sự sẽ thấp hơn cho số thấp hơn. Trong cùng một phạm vi, thứ tự được xác định theo nghĩa đen các bit giống như không có mã hóa.
Postgres sử dụng collation được xác định bởi ngôn ngữ hệ thống khi tạo cụm.
Bạn có thể thử để ORDER BY mã hóa (cột, 'hex')
Sắp xếp thứ tự của văn bản phụ thuộc vào lc_collate
(không phải trên miền địa phương hệ thống!). Miền địa phương hệ thống chỉ phục vụ như là một mặc định khi tạo cụm db nếu bạn không cung cấp một miền địa phương khác.
Hành vi bạn đang mong đợi chỉ hoạt động với ngôn ngữ C
. Đọc tất cả về nó in the fine manual:
Các collations C và POSIX cả xác định hành vi "C truyền thống", trong mà chỉ các kí tự ASCII "A" thông qua "Z" được coi là chữ cái, và phân loại được thực hiện theo đúng giá trị byte mã ký tự.
Mỏ nhấn mạnh. PostgreSQL 9.1 có một số new features for collation. Có thể chính xác những gì bạn đang tìm kiếm.
Làm thế nào để bạn làm cho nó làm một loại chữ cái thay vì sắp xếp một điểm mã? Bạn biết đấy, vì vậy nó sử dụng thuật toán Unicode Collation Algorithm. Nếu không, bạn sẽ không bao giờ nhận được một sắp xếp chữ cái trên văn bản Unicode. – tchrist
@tchrist: Thông thường bạn có 'lc_collate' được đặt thành ngôn ngữ của bạn. Ví dụ: ở Anh, bạn có thể có 'lc_collate' được đặt thành' en_EN.utf8'. Hãy thử 'SHOW lc_collate;' để xem cài đặt của bạn. Theo liên kết trong câu trả lời của tôi để biết thêm thông tin. –
- 1. Perl & MongoDB dữ liệu nhị phân
- 2. Hoạt động nhị phân trên tệp nhị phân Erlang?
- 3. libpq của PostgreSQL: Mã hóa cho truyền tải nhị phân ARRAY [] - dữ liệu?
- 4. Sql Server Collation
- 5. Thêm số nhị phân
- 6. Chuyển cây nhị phân
- 7. JAVA: cây nhị phân
- 8. Tìm kiếm nhị phân không phân nhánh
- 9. Phân tích tệp nhị phân trong Ruby
- 10. django không được tạo ra với utf8
- 11. Trường hợp collation nhạy cảm trong MySQL
- 12. MySQL Collation: latin1_swedish_ci Vs utf8_general_ci
- 13. chia hết nhị phân 3
- 14. Phản ứng nhị phân Ajax
- 15. So sánh nhị phân DLL
- 16. LD_PRELOAD với nhị phân setuid
- 17. Đọc/Viết Tệp nhị phân
- 18. Java dài thành nhị phân
- 19. File nhị phân I/O
- 20. numpy.array boolean thành nhị phân?
- 21. Cách tạo cây nhị phân
- 22. Số nhị phân trong Python
- 23. thay thế sed nhị phân
- 24. OCaml: vẽ cây nhị phân
- 25. RESTful tạo tệp nhị phân
- 26. Biểu thị số nhị phân
- 27. Dãy Fibonacci, nhị phân, hoặc nhị thức trong C#?
- 28. COLLATION 'utf8_general_ci' không hợp lệ đối với CHARACTER SET 'binary'?
- 29. Làm thế nào để chuyển đổi một db trong postgreSQL thành utf8?
- 30. Việc thu thập utf8 nào là tốt nhất?
Đó là một loại điểm mã, hoàn toàn vô dụng trên Unicode. Làm thế nào để bạn làm cho nó làm một loại chữ cái thích hợp bằng cách sử dụng thuật toán sắp xếp theo yêu cầu của Unicode trong thuật toán Unicode Collation Algorithm? – tchrist
@ tchrist: Đó không phải là câu hỏi. –