Khi tôi cố lưu tệp văn bản bằng văn bản không phải tiếng Anh trong Notepad, tôi nhận được một tùy chọn để chọn giữa nicode, nicode Big Endian và TF-8. Sự khác biệt giữa các định dạng này là gì?
Giả sử tôi không không muốn mọi khả năng tương thích ngược (với các phiên bản hoặc ứng dụng HĐH cũ hơn) và tôi làm không quan tâm đến kích thước tệp, định dạng nào tốt hơn?
(Giả sử rằng văn bản có thể bằng các ngôn ngữ như tiếng Trung hoặc tiếng Nhật, ngoài các ngôn ngữ khác.)
Lưu ý : Từ các câu trả lời và nhận xét bên dưới, dường như trong biệt ngữ Notepad, Unicode là UTF-16 (Little Endian), Unicode Big Endian là UTF-16 (Big Endian) và UTF-8 cũng là UTF -số 8.
Dunno. Cái nào tốt hơn: cưa hay búa? :-)
Có một chút trong bài viết có liên quan nhiều hơn đến chủ đề trong tay:
Họ nhìn vào tất cả những con số không! Họ nói, vì họ là người Mỹ và họ đang xem văn bản tiếng Anh hiếm khi sử dụng điểm mã trên U + 00FF. Ngoài ra, họ là những người híp-pi tự do ở California, những người muốn bảo tồn (người chế nhạo). Nếu họ là người Texas, họ sẽ có ý định đánh cắp số lượng byte gấp đôi. Nhưng những người phù thủy ở California không thể mang ý tưởng nhân đôi số lượng lưu trữ cần thiết cho chuỗi
UTF-32 tập trung vào tính toàn diện và biểu diễn độ dài cố định, sử dụng 4 byte cho tất cả các ký tự. Nó có bản dịch đơn giản nhất, ánh xạ trực tiếp mã Unicode tới 4 byte. Rõ ràng, nó không rất hiệu quả.
UTF-16 là một sự thỏa hiệp, sử dụng 2 byte hầu hết thời gian, nhưng mở rộng thành 2 * 2 byte cho mỗi ký tự để thể hiện một số ký tự nhất định, những ký tự không có trong Mặt phẳng đa ngôn ngữ cơ bản (BMP).
Đối với các ngôn ngữ châu Âu, UTF-8 nhỏ hơn. Đối với các ngôn ngữ phương Đông, sự khác biệt không quá rõ ràng.
Cả hai sẽ xử lý tất cả các ký tự Unicode có thể, do đó nó sẽ không tạo ra sự khác biệt về khả năng tương thích.
Có nhiều mã hóa ký tự Unicode hơn bạn nghĩ.
UTF 8
Mã hóa UTF-8 có độ rộng thay đổi, dao động từ 1-4 byte, với các bit trên của mỗi byte được dành làm bit điều khiển. Các bit đầu của byte đầu tiên cho biết tổng số byte được sử dụng cho ký tự đó. Giá trị vô hướng của điểm mã của ký tự là nối các bit không điều khiển. Trong bảng này, x
đại diện cho 8 bit thấp nhất của giá trị Unicode, y
đại diện cho 8 bit cao hơn tiếp theo và z
đại diện cho các bit cao hơn thế.
Unicode Byte1 Byte2 Byte3 Byte4
U+0000-U+007F 0xxxxxxx
U+0080-U+07FF 110yyyxx 10xxxxxx
U+0800-U+FFFF 1110yyyy 10yyyyxx 10xxxxxx
U+10000-U+10FFFF 11110zzz 10zzyyyy 10yyyyxx 10xxxxxx
"Unicode" là một thuật ngữ khác của "UTF-16", là một mã hóa của ký tự Unicode được đặt thành mười sáu bit cho mỗi ký tự. UTF-8 mã hóa nó thành tám bit cho mỗi ký tự.
Trong cả hai trường hợp, bất kỳ tràn nào được phân bổ cho 16 hoặc tám bit khác.
Lợi thế thực sự duy nhất với các tệp nhỏ như tệp văn bản là kích thước tệp kết quả. UTF-8 thường tạo ra các tệp nhỏ hơn. Nhưng sự khác biệt này có thể ít rõ rệt hơn với văn bản Trung Quốc/Nhật Bản.
Trong một từ, Unicode là một bộ ký tự , trong khi Unicode Big Endian và utf-8 là hai mã hóa , được sử dụng để lưu trữ các ký tự dưới dạng 01 trên máy tính.