Cùng xem Utf-8 là gì? Tại sao chúng ta cần hiểu về utf-8? – Cách thiết kế Web trên youtube.
Có thể bạn quan tâm
- Bất động sản tiếng anh là gì? Liệu bạn đã biết rõ về khái niệm này
- [Dota 2] Mọi thứ bạn cần biết về Dota 2 MMR, cách kiểm tra nó – JBO247 – Nhà cái Jbo Esports hàng đầu châu Á
- Tìm hiểu Diagnostic Policy Service Là Gì, Các Khắc Phục Máy Tính Không Kết Nối Mạng Được
- Chiếm dụng là gì? Chiếm dụng vốn là gì? Cách giải quyết chiếm dụng vốn?
- Viettel Store – Nhà mạng bán điện thoại lớn nhất Việt Nam
utf-8 là gì là một trong những từ khóa được tìm kiếm nhiều nhất trên google về utf-8 là gì. trong bài viết này cachthietkeweb.vn sẽ viết bài utf-8 là gì? tại sao chúng ta cần hiểu về utf-8?
utf-8 là gì? tại sao chúng ta cần hiểu về utf-8?
chúng ta thường nghe về unicode, utf-8, utf16 hoặc shift-js.
Trong bài viết này, chỉ sử dụng các định nghĩa này một cách rõ ràng để khi gặp sự cố với bộ ký tự hoặc bảng mã, bạn sẽ có cách giải quyết phù hợp.
- mã hóa ký tự là gì?
- mã hóa?
- unicode, shift-jis, utf8, utf16 nghĩa là gì?
1. mã hóa ký tự là gì?
bảng mã char là một bảng được sử dụng để lập chỉ mục một tập hợp các ký tự (char), để mỗi ký tự được gán từ một số (mã) duy nhất. giá trị mã luôn được đánh số liên tục theo số gia. điều này sẽ tạo ra một thứ tự cho mỗi ký tự trong bộ ký tự trên.
chúng tôi biết mã hóa ascii:
trong bảng trên, chúng ta thấy cột char, giới thiệu các ký tự; các cột thập phân (hoặc thập lục phân) chứa giá trị được gán cho ký tự tương ứng trong cột ký tự.
Xem Thêm : ” Trưởng Bộ Phận Tiếng Anh Là Gì ? Đọc Ngay Để Có Câu Trả Lời
Định nghĩa mã hóa rất dễ hiểu, những cái khó có trong phần 2
2. mã hóa là gì?
chúng tôi vừa hiểu khái niệm về mã hóa ký tự. đến đây về cơ bản không có gì giống menu bảng giá ở quán. bây giờ chúng tôi muốn sử dụng các ký tự từ bảng đó trên máy tính, chúng tôi cần một cách để ánh xạ các ký tự đó vào máy tính.
làm thế nào để mô tả điều này? có một phương pháp rất hay để sử dụng trong trường hợp này: đó là mỗi ký tự được lưu trữ trong bộ nhớ với cùng độ dài byte.
nếu giá trị là 0 ~ 100 : chúng tôi cần 1 byte (vì giá trị có thể nằm trong khoảng: 0 ~ 255) nếu giá trị là 0 ~ 60000 : chúng ta cần 2 byte (vì giá trị có thể nằm trong khoảng: 0 ~ 65535) nếu giá trị 0 ~ 1000 : chúng ta vẫn cần 2 byte (vì giá trị có thể nằm trong khoảng: 0 ~ 1000) d
Với công thức này, giá trị được lưu là giá trị trong bảng mã ký tự cũ, vì vậy các giá trị được lưu tất nhiên giống với giá trị được ghi trong bảng.
ví dụ: như một bảng ascii, chúng ta cần 1 byte: a – & gt; 65 (0x41); b- & gt; 66 (0x42) Giả sử một tập hợp con của unicode (từ 0x0000 -> 0xffff ) được mã hóa cho hướng dẫn này, chúng tôi sẽ cần 2 byte. à – & gt; 0x00c0 – & gt; nó sẽ luôn được lưu dưới dạng 0x00c0 . a – & gt; 0x00c1 – & gt; nó sẽ luôn được lưu dưới dạng 0x00c1 . nếu bạn tiếp tục sử dụng theo cách này, tất cả các bảng mã sẽ mã hóa tốt.
nhưng có một vấn đề ở đây, giả sử mọi người đều sử dụng unicode (hiện tại giá trị lớn nhất là 0x1f8ff), có nghĩa là cần khoảng 3 byte để mã hóa mọi thứ. nếu vậy, các tài liệu chỉ sử dụng ascii sẽ có kích thước gấp 3 lần kích thước bình thường. điều này là hoàn toàn sai lầm. Rồi sao???? một lý do lịch sử khác. Đó là trước khi máy tính phổ biến khắp nơi, chúng hầu như chỉ được sử dụng ở Mỹ. uu. và bảng mã thường được sử dụng trong hầu hết các máy tính là ascii, và phương pháp mã hóa có độ dài cố định 1 byte. nhiều nhân vật nữa sẽ xuất hiện bây giờ, mong các bạn đọc giúp? sử dụng mã hóa mới là đương nhiên, nhưng còn phương pháp mã hóa thì sao? bạn đã xóa phương pháp độ dài cố định 1 byte và thay thế bằng phương pháp độ dài cố định nhiều byte chưa?
3. unicode, shift-js, utf8, utf16
unicode là một bảng mã chứa hầu hết các ký tự của hầu hết các ngôn ngữ trên thế giới. shift-jis là mã hóa được sử dụng trên hầu hết các máy tính ở Nhật Bản, do jis cung cấp. utf8 là gì? là một phương pháp mã hóa rất đa dạng để biểu diễn mã hóa unicode trong bộ nhớ. khi mọi người thảo luận về cách mã hóa bảng mã unicode này trên máy tính. tất nhiên họ đều là người Mỹ, họ muốn mọi người có thể sử dụng unicode, nhưng họ không muốn từ bỏ thủ thuật mã hóa cũ cho ascii. họ nghĩ ra phương pháp sau:
với các ký tự từ 0 (0x00) ~ 127 (0x7f) (tức là ascii – 128 ký tự): vẫn là 1 byte. : 0x * 0vvvvvvv với các ký tự từ ** 0x80 ~ 0x7ff * (với 1920 ký tự) sẽ sử dụng 2 byte: 0x * 110vvvvv 0x10vvvvv với các ký tự từ ** 0x800 ~ 0xffff * (với 63488 ký tự) sẽ sử dụng 3 byte: 0x * 1110vvvv 0x10vvvvv 0x10vvvvvv vvvvv…
Xem Thêm : "Mãi bên nhau bạn nhé" là gì? Tại sao lại HOT đến vậy?
một số mẹo từ hướng dẫn mã hóa ascii luôn là ascii, luôn là ký tự 1 byte a – & gt; 65 -> 0x41; b- & gt; 66 -> 0x42 các ký tự không phải ascii sẽ trông giống như sau: asia – & gt; 0x00c0 , mã nhị phân 1100 0000 , giá trị của mã này nằm trong khoảng 0x80 – & gt; 0x7ff nên giá trị cần ghi phải có dạng 0x * 110vvvv 0x10vvvvvv sẽ được mã hóa như sau: ta chia 6 bit cuối của ký tự và đặt 6 bit cuối của byte thấp, hoặc byte thấp sẽ có giá trị: 0x10000000 và 2 bit 11 của ký tự, ta đặt 2 bit cuối của byte cao, hoặc byte cao sẽ có giá trị: 0x110vvv11, k bit được đặt bằng 0 nên byte cao sẽ có giá trị : 0x11000011 cuối cùng chúng tôi nhận được giá trị mã hóa asia trong utf-8 là * 0xc380 **. (đúng với liên kết hướng dẫn http://unicode-table.com/en/00c0/)
và như vậy để gán vào cuối bảng unicode. chúng ta thấy rằng, với thủ thuật mã hóa này, giá trị bảng và giá trị được lưu trữ không phải lúc nào cũng giống nhau (ngoại trừ ascii). chúng ta sẽ thấy số bit in đậm ở trên có giá trị cố định để sử dụng cho việc nhận dạng. Dựa trên các bit được đặt ở đầu mỗi byte, chương trình đọc (trình soạn thảo, …) sẽ biết đó là ký tự 1 byte (ascii) hay ký tự nhiều byte.
Với các bảng mã trên, các tài liệu được viết bằng ascii tất nhiên có kích thước tối ưu. Các ký tự Châu Á chủ yếu sẽ được biểu diễn dưới dạng 2 byte. điều này dẫn đến các câu lệnh “utf8 là 2 byte hoặc unicode là 2 byte”. Hình ảnh tiếng Việt có dấu 2 byte của chúng ta có vẻ là đúng, nhưng không hoàn toàn đúng. (theo @ lehuy11 bình luận của bạn bên dưới)
mặc dù có nhiều ưu điểm như trên. luôn luôn là nhược điểm. đó là các ký tự từ một số quốc gia nằm ngoài phạm vi 0x80 -> 0x7ff sẽ phải được thể hiện bằng 3 byte. kéo đến đĩa cài đặt windows cho tiếng Thái có dung lượng gấp 3 lần dung lượng đĩa đối với chúng tôi (đây là giả định) và microsoft không sử dụng utf-8 làm mã hóa mặc định. có vẻ như họ sử dụng utf16. (mong mọi người xung quanh xác nhận)
utf16 gần giống với hướng dẫn bộ mã hóa utf-8 nhưng sử dụng 2 byte để mã hóa tất cả ascii.
ví dụ a – & gt; 65 -> 0x41 – & gt; sẽ được mã hóa là 0x0041 ; b – & gt; 66 -> 0x42 – & gt; sẽ được mã hóa là 0x0042 .
Châu Á – & gt; 0x00c0 – & gt; sẽ được mã hóa là 0x00c0 . à – & gt; 0x00c1 – & gt; sẽ được mã hóa là 0x00c1 . (theo link SGK http://unicode-table.com/vi/00c0/)
với phương thức trong ký tự ascii sẽ có gấp đôi số byte. tuy nhiên, phạm vi ký tự 0x0000 – & gt; 0xffff sẽ chỉ sử dụng 2 byte. với phạm vi này, nó bao gồm hầu hết tất cả các nhân vật trên thế giới. đĩa cài đặt windows giống nhau ở mọi nơi, kích thước như nhau. :))
nguồn: kipalog.com
Nguồn: https://dongnaiart.edu.vn
Danh mục: FAQ
Lời kết: Trên đây là bài viết Utf-8 là gì? Tại sao chúng ta cần hiểu về utf-8? – Cách thiết kế Web. Hy vọng với bài viết này bạn có thể giúp ích cho bạn trong cuộc sống, hãy cùng đọc và theo dõi những bài viết hay của chúng tôi hàng ngày trên website: Dongnaiart.edu.vn