2012-07-18 33 views
28

utf16 hoặc utf32? Tôi đang cố gắng lưu trữ nội dung bằng nhiều ngôn ngữ. Một số ngôn ngữ sử dụng phông chữ đôi (ví dụ: phông chữ tiếng Nhật thường gấp hai lần phông chữ tiếng Anh). Tôi không chắc tôi nên sử dụng loại cơ sở dữ liệu nào. Bất kỳ thông tin nào về sự khác biệt giữa bốn bộ ký tự này ...Utf8_general_ci hoặc utf8mb4 hoặc ...?

Trả lời

40

MySQL utf32utf8mb4 (cũng như UTF-8 chuẩn) có thể lưu trữ trực tiếp bất kỳ ký tự nào được chỉ định bởi Unicode; trước đây là kích thước cố định ở 4 byte cho mỗi ký tự trong khi ký tự thứ hai là từ 1 đến 4 byte cho mỗi ký tự.

utf8mb3 và bản gốc utf8 chỉ có thể lưu trữ 65.536 điểm đầu tiên, bao gồm CJVK (Trung Quốc, Nhật Bản, Việt Nam, Hàn Quốc) và sử dụng 1-3 byte cho mỗi ký tự.

utf16 sử dụng 2 byte cho 65.536 điểm mã đầu tiên và 4 byte cho mọi thứ khác.

Đối với phông chữ, đó là một điều trực quan.

"The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)"

Xem thêm MySQL documentation for Unicode support.

+5

Chỉ cần rõ ràng hơn, nhận xét về 'utf8_general' cũng áp dụng cho tất cả các đối sánh' utf8_ * 'khác; tất cả sẽ sử dụng bộ ký tự 'utf8mb3' hay' utf8' của MySQL. –

+0

@JohnFlatness Cảm ơn. Bình luận của bạn chỉ là những gì tôi sẽ hỏi về tiếp theo. Tôi nghĩ rằng UTF-16 sử dụng 2 byte cho các ký tự tiếng Hoa, ví dụ, mặc dù? Tôi đang xem tài liệu bạn đã cung cấp cho tôi, hy vọng rằng nó bao gồm 65.536 ý nghĩa. XD –

+0

Ký tự Trung Quốc nằm trong Mặt phẳng đa ngôn ngữ cơ bản (65.536 điểm mã đầu tiên). –

Các vấn đề liên quan