it-swarm-vi.tech

Unicode, Unicode Big Endian hay UTF-8? Sự khác biệt là gì? Định dạng nào tốt hơn?

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 EndianTF-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.

19
Ashwin Nanjappa

Dunno. Cái nào tốt hơn: cưa hay búa? :-)

nicode không phải là UTF

Có một chút trong bài viết có liên quan nhiều hơn đến chủ đề trong tay:

  • UTF-8 tập trung vào việc giảm thiểu kích thước byte để thể hiện các ký tự từ tập ASCII (biểu diễn độ dài biến: mỗi ký tự được biểu thị trên 1 đến 4 byte và ASCII ký tự đều phù hợp 1 byte). Như Joel nói:

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).

Xem thêm Tối thiểu tuyệt đối Mỗi nhà phát triển phần mềm Tuyệt đối, Tích cực phải biết về Unicode và Bộ ký tự (Không có lý do!)

19
Jason Baker

Đố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.

4
Mark Ransom

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
    
  • UCS-16
  • UCS-16BE
  • UCS-16LE

  • UTF-16
  • UTF-16BE
  • UTF-16LE

  • UTF-32
  • UTF-32-BE
3
Brad Gilbert

"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.

1
John Saunders

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.

1
zildjohn01

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.

0
thuzhf