Mã hóa nào được ưu tiên cho các tệp HTML?
Mã hóa ký tự là một phương pháp chuyển đổi byte thành ký tự. Để xác thực hoặc hiển thị đúng tài liệu HTML, chương trình phải chọn mã hóa ký tự phù hợp Show
Bộ ký tự hoặc mã hóa ký tự phổ biến nhất được sử dụng trên máy tính là ASCII - Mã tiêu chuẩn của Mỹ để trao đổi thông tin và đây có lẽ là bộ ký tự được sử dụng rộng rãi nhất để mã hóa văn bản điện tử Mã hóa ASCII chỉ hỗ trợ bảng chữ cái Latinh viết hoa và viết thường, các số 0-9 và một số ký tự phụ tạo tổng cộng 128 ký tự. Bạn có thể xem toàn bộ các ký tự ASCII có thể in được Tuy nhiên, nhiều ngôn ngữ sử dụng ký tự Latinh có dấu hoặc bảng chữ cái hoàn toàn khác. ASCII không giải quyết các ký tự này; Tổ chức Tiêu chuẩn Quốc tế đã tạo ra một loạt các bộ ký tự để đối phó với các ký tự quốc gia khác nhau. Đối với các tài liệu bằng tiếng Anh và hầu hết các ngôn ngữ Tây Âu khác, mã hóa được hỗ trợ rộng rãi ISO-8859-1 được sử dụng Dưới đây là danh sách Bộ ký tự đang được sử dụng trên toàn thế giới cùng với mô tả của chúng Sr. STT Bộ ký tự & Mô tả1ISO-8859-1 Bảng chữ cái Latinh phần 1 Bao gồm Bắc Mỹ, Tây Âu, Mỹ Latinh, theCaribbean, Canada, Châu Phi 2ISO-8859-2 Bảng chữ cái Latinh phần 2 Bao trùm Đông Âu 3ISO-8859-3 Bảng chữ cái Latinh phần 3 Bao gồm Đông Nam Âu, Esperanto, linh tinh khác 4ISO-8859-4 Bảng chữ cái Latinh phần 4 Bao gồm Scandinavia/Baltic (và những nơi khác không có trong ISO-8859-1) 5ISO-8859-5 Bảng chữ cái Latinh/Cyrillic phần 5 6ISO-8859-6 Bảng chữ cái Latinh/Ả Rập phần 6 7ISO-8859-7 Bảng chữ cái Latinh/Hy Lạp phần 7 8ISO-8859-8 Bảng chữ cái Latinh/Hebrew phần 8 9ISO-8859-9 Bảng chữ cái Latinh 5 phần 9 Giống như ISO-8859-1 ngoại trừ các ký tự tiếng Thổ Nhĩ Kỳ thay thế các ký tự tiếng Iceland 10ISO-8859-10 Tiếng Latinh 6 Tiếng Latinh 6 Tiếng Lappish, Bắc Âu và Eskimo 11ISO-8859-15 Giống như ISO-8859-1 nhưng có thêm nhiều ký tự hơn 12ISO-2022-JP Bảng chữ cái Latinh/Nhật phần 1 13ISO-2022-JP-2 Bảng chữ cái Latinh/Nhật phần 2 14ISO-2022-KR Bảng chữ cái Latinh/Hàn Quốc phần 1 Hiệp hội Unicode sau đó đã được thiết lập để nghĩ ra cách hiển thị tất cả các ký tự của các ngôn ngữ khác nhau, thay vì có các mã ký tự không tương thích khác nhau này cho các ngôn ngữ khác nhau Do đó, nếu bạn muốn tạo tài liệu sử dụng các ký tự từ nhiều bộ ký tự, bạn sẽ có thể làm như vậy bằng cách sử dụng các mã hóa ký tự Unicode đơn lẻ Do đó, Unicode chỉ định các mã hóa có thể xử lý một chuỗi theo những cách đặc biệt để tạo đủ khoảng trống cho bộ ký tự lớn mà nó bao gồm. Chúng được gọi là UTF8, UTF-16 và UTF-32 UTF-8 Định dạng dịch thuật Unicode có đơn vị 8 bit, có dạng byte. Một ký tự trong UTF8 có thể dài từ 1 đến 4 byte, làm cho chiều rộng của UTF8 thay đổi 2UTF-16 Định dạng dịch thuật Unicode có đơn vị 16 bit, có dạng ngắn. Nó có thể dài 1 hoặc 2 quần short, làm cho chiều rộng thay đổi theo UTF16 3UTF-32 Định dạng dịch thuật Unicode có đơn vị 32 bit, có thời lượng dài. Đây là định dạng có chiều rộng cố định và luôn dài 1 "dài" 256 ký tự đầu tiên của bộ ký tự Unicode tương ứng với 256 ký tự của ISO-8859-1 Theo mặc định, bộ xử lý HTML 4 phải hỗ trợ UTF-8 và bộ xử lý XML phải hỗ trợ UTF-8 và UTF-16; Trong khi Ngôn ngữ đánh dấu siêu văn bản (HTML) đã được sử dụng từ năm 1991, HTML 4. 0 từ tháng 12 năm 1997 là phiên bản tiêu chuẩn hóa đầu tiên trong đó các ký tự quốc tế được xử lý hoàn chỉnh hợp lý. Khi một tài liệu HTML bao gồm các ký tự đặc biệt nằm ngoài phạm vi ASCII bảy bit, hai mục tiêu đáng được xem xét. tính toàn vẹn của thông tin và hiển thị trình duyệt chung Chỉ định mã hóa ký tự của tài liệu[sửa]Có hai cách chung để chỉ định mã hóa ký tự nào được sử dụng trong tài liệu Đầu tiên, máy chủ web có thể bao gồm mã hóa ký tự hoặc " 7" trong tiêu đề Giao thức truyền siêu văn bản (HTTP) 8, tiêu đề này thường trông như thế này. [1] Content-Type: text/html; charset=utf-8 Phương pháp này cung cấp cho máy chủ HTTP một cách thuận tiện để thay đổi mã hóa của tài liệu theo thỏa thuận nội dung; . [2] Thứ hai, một tuyên bố có thể được bao gồm trong chính tài liệu Đối với HTML, có thể bao gồm thông tin này bên trong phần tử 0 ở gần đầu tài liệu. [3] HTML5 cũng cho phép cú pháp sau có nghĩa giống hệt nhau. [3] Tài liệu XHTML có tùy chọn thứ ba. để thể hiện mã hóa ký tự thông qua khai báo XML, như sau. [4] Với cách tiếp cận thứ hai này, vì không thể biết mã hóa ký tự cho đến khi khai báo được phân tích cú pháp, nên có một vấn đề là biết mã hóa ký tự nào được sử dụng trong tài liệu cho đến và bao gồm cả chính khai báo đó. Nếu mã hóa ký tự là một phần mở rộng ASCII thì nội dung cho đến và bao gồm cả phần khai báo phải là ASCII thuần túy và điều này sẽ hoạt động chính xác. Đối với mã hóa ký tự không phải là phần mở rộng ASCII (i. e. không phải là tập hợp siêu của ASCII), chẳng hạn như UTF-16BE và UTF-16LE, bộ xử lý HTML, chẳng hạn như trình duyệt web, sẽ có thể phân tích cú pháp khai báo trong một số trường hợp thông qua việc sử dụng heuristic Thuật toán phát hiện mã hóa[sửa | sửa mã nguồn]Kể từ HTML5, bộ ký tự được đề xuất là UTF-8. [3] Một "thuật toán đánh hơi mã hóa" được xác định trong thông số kỹ thuật để xác định mã hóa ký tự của tài liệu dựa trên nhiều nguồn đầu vào, bao gồm
Các ký tự bên ngoài phạm vi ASCII có thể in được (32 đến 126) thường xuất hiện không chính xác. Điều này gây ra một số vấn đề đối với người dùng nói tiếng Anh, nhưng các ngôn ngữ khác thường xuyên—trong một số trường hợp, luôn luôn—yêu cầu các ký tự nằm ngoài phạm vi đó. Trong các môi trường ngôn ngữ tiếng Trung, tiếng Nhật và tiếng Hàn (CJK), nơi có một số mã hóa nhiều byte khác nhau được sử dụng, tính năng tự động phát hiện cũng thường được sử dụng. Cuối cùng, các trình duyệt cũng thường cho phép người dùng ghi đè nhãn bộ ký tự không chính xác theo cách thủ công Các trang web đa ngôn ngữ và trang web bằng các ngôn ngữ không thuộc phương Tây sử dụng UTF-8 ngày càng phổ biến, cho phép sử dụng cùng một mã hóa cho tất cả các ngôn ngữ. UTF-16 hoặc UTF-32, cũng có thể được sử dụng cho tất cả các ngôn ngữ, ít được sử dụng rộng rãi hơn vì chúng có thể khó xử lý hơn trong các ngôn ngữ lập trình giả sử mã hóa siêu bộ ASCII hướng byte và chúng kém hiệu quả hơn đối với văn bản với Việc xem thành công một trang không nhất thiết là dấu hiệu cho thấy mã hóa của trang đó được chỉ định chính xác. Nếu cả người tạo và người đọc trang đều giả định một số mã hóa ký tự dành riêng cho nền tảng và máy chủ không gửi bất kỳ thông tin nhận dạng nào, thì người đọc vẫn sẽ thấy trang như ý định của người tạo, nhưng những người đọc khác trên các nền tảng khác hoặc bằng các ngôn ngữ bản địa khác Mã hóa được phép[sửa]Tiêu chuẩn mã hóa WHATWG, được tham chiếu bởi các tiêu chuẩn HTML gần đây (Tiêu chuẩn sống của WHATWG HTML hiện tại, cũng như W3C HTML 5 cạnh tranh trước đây. 0 và 5. 1) chỉ định danh sách mã hóa mà trình duyệt phải hỗ trợ. Các tiêu chuẩn HTML cấm hỗ trợ các bảng mã khác. [6][7][8] Tiêu chuẩn mã hóa quy định thêm rằng các định dạng mới, giao thức mới (ngay cả khi các định dạng hiện có được sử dụng) và tác giả của các tài liệu mới được yêu cầu sử dụng riêng UTF-8. [9] Ngoài UTF-8, các bảng mã sau được liệt kê rõ ràng trong chính tiêu chuẩn HTML, có tham chiếu đến Tiêu chuẩn mã hóa. [số 8]
Các mã hóa bổ sung sau đây được liệt kê trong Tiêu chuẩn mã hóa và do đó cũng cần hỗ trợ cho chúng. [9]
Các mã hóa sau đây được liệt kê là ví dụ rõ ràng về mã hóa bị cấm. [số 8] Tiêu chuẩn cũng xác định bộ giải mã "thay thế", ánh xạ tất cả nội dung được gắn nhãn là mã hóa nhất định cho ký tự thay thế (�), hoàn toàn từ chối xử lý nội dung đó. Điều này nhằm mục đích ngăn chặn các cuộc tấn công (e. g. tập lệnh chéo trang) có thể khai thác sự khác biệt giữa máy khách và máy chủ về mã hóa nào được hỗ trợ để che dấu nội dung độc hại. [28] Mặc dù mối quan tâm bảo mật tương tự áp dụng cho ISO-2022-JP và UTF-16, cũng cho phép các chuỗi byte ASCII được diễn giải theo cách khác, phương pháp này không được coi là khả thi đối với chúng vì chúng được sử dụng tương đối thường xuyên hơn trong triển khai . [29] Các bảng mã sau nhận được cách xử lý này. [30] Tài liệu tham khảo nhân vật [ chỉnh sửa ]Ngoài mã hóa ký tự gốc, các ký tự cũng có thể được mã hóa dưới dạng tham chiếu ký tự, có thể là tham chiếu ký tự số (thập phân hoặc thập lục phân) hoặc tham chiếu thực thể ký tự. Tham chiếu thực thể ký tự đôi khi cũng được gọi là thực thể được đặt tên hoặc thực thể HTML cho HTML. Việc sử dụng các tham chiếu ký tự của HTML bắt nguồn từ SGML Tham chiếu ký tự HTML[sửa mã nguồn]Một tham chiếu ký tự số trong HTML đề cập đến một ký tự theo điểm mã Unicode/Bộ ký tự chung của nó và sử dụng định dạng 6 hoặc là 7 trong đó nnnn là điểm mã ở dạng thập phân và hhhh là điểm mã ở dạng thập lục phân. X phải là chữ thường trong tài liệu XML. nnnn hoặc hhhh có thể là bất kỳ số chữ số nào và có thể bao gồm các số 0 đứng đầu. hhhh có thể trộn lẫn chữ hoa và chữ thường, mặc dù chữ hoa là kiểu thông thường Không phải tất cả các trình duyệt web hoặc ứng dụng email được sử dụng bởi người nhận tài liệu HTML hoặc trình soạn thảo văn bản được tác giả của tài liệu HTML sử dụng đều có thể hiển thị tất cả các ký tự HTML. Hầu hết các phần mềm hiện đại đều có thể hiển thị hầu hết hoặc tất cả các ký tự cho ngôn ngữ của người dùng và sẽ vẽ một hộp hoặc chỉ báo rõ ràng khác cho các ký tự mà chúng không thể hiển thị Đối với các mã từ 0 đến 127, bộ tiêu chuẩn ASCII 7 bit ban đầu, hầu hết các ký tự này có thể được sử dụng mà không cần tham chiếu ký tự. Tất cả các mã từ 160 đến 255 đều có thể được tạo bằng tên thực thể ký tự. Chỉ một số mã được đánh số cao hơn có thể được tạo bằng cách sử dụng tên thực thể, nhưng tất cả đều có thể được tạo bằng tham chiếu ký tự số thập phân Các tham chiếu thực thể ký tự cũng có thể có định dạng 8 trong đó tên là một chuỗi chữ và số phân biệt chữ hoa chữ thường. Ví dụ: "λ" cũng có thể được mã hóa thành 9 trong tài liệu HTML. Các tham chiếu thực thể ký tự 0, 1, 2 và 3 được xác định trước trong HTML và SGML, bởi vì 0, 1, 2 và 3 đã được sử dụng để phân định đánh dấu. Đáng chú ý là điều này không bao gồm thực thể 8 (') của XML trước HTML5. Để biết danh sách tất cả các tham chiếu thực thể ký tự HTML đã đặt tên cùng với các phiên bản mà chúng được giới thiệu, hãy xem Danh sách tham chiếu thực thể ký tự XML và HTML Việc sử dụng tham chiếu ký tự HTML không cần thiết có thể làm giảm đáng kể khả năng đọc HTML. Nếu mã hóa ký tự cho một trang web được chọn phù hợp, thì các tham chiếu ký tự HTML thường chỉ được yêu cầu đối với các ký tự phân tách đánh dấu như đã đề cập ở trên và đối với một vài ký tự đặc biệt (hoặc hoàn toàn không có ký tự nào nếu sử dụng mã hóa Unicode gốc như UTF-8 . Thoát thực thể HTML không chính xác cũng có thể mở ra các lỗ hổng bảo mật cho các cuộc tấn công tiêm chích, chẳng hạn như tập lệnh chéo trang. Nếu các thuộc tính HTML không được trích dẫn, một số ký tự nhất định, quan trọng nhất là khoảng trắng, chẳng hạn như dấu cách và tab, phải được thoát bằng cách sử dụng các thực thể. Các ngôn ngữ khác liên quan đến HTML có phương thức thoát ký tự riêng Tham chiếu ký tự XML[sửa]Không giống như HTML truyền thống với nhiều tham chiếu thực thể ký tự, trong XML chỉ có năm tham chiếu thực thể ký tự được xác định trước. Chúng được sử dụng để thoát các ký tự nhạy cảm với đánh dấu trong các ngữ cảnh nhất định. [31] Tất cả các tham chiếu thực thể ký tự khác phải được xác định trước khi chúng có thể được sử dụng. Ví dụ: việc sử dụng 74 (cung cấp é, chữ E viết thường trong tiếng Latinh có dấu rõ ràng, U+00E9 trong Unicode) trong tài liệu XML sẽ tạo ra lỗi trừ khi thực thể đã được xác định. XML cũng yêu cầu 75 ở dạng tham chiếu số thập lục phân phải ở dạng chữ thường. ví dụ 76 thay vì 76. XHTML, là một ứng dụng XML, hỗ trợ tập thực thể HTML, cùng với các thực thể được xác định trước của XML Mã hóa nào là tốt nhất cho HTML?Lựa chọn tốt nhất của bạn. UTF-8
. Đến năm 2019, hơn 90 phần trăm tất cả các trang web sử dụng UTF-8. Nó cũng được khuyến nghị sử dụng làm mã hóa ký tự HTML mặc định bởi World Web Consortium.
Là HTML ASCII hay UTFMã hóa ký tự mặc định trong HTML-5 là UTF-8 .
Tại sao bạn nên mã hóa tài liệu HTML bằng UTFTại sao lại sử dụng UTF-8? . Bạn không thể mã hóa các phần khác nhau của tài liệu bằng các mã hóa khác nhau. Mã hóa dựa trên Unicode chẳng hạn như UTF-8 có thể hỗ trợ nhiều ngôn ngữ và có thể chứa các trang và biểu mẫu trong bất kỳ hỗn hợp nào của các ngôn ngữ đó .
UTF gìUTF-8 là viết tắt của Định dạng chuyển đổi Unicode 8-bit . Đó là một bộ ký tự có hầu hết tất cả các ký tự, dấu câu và ký hiệu đã biết. UTF-8 bao gồm hàng chục nghìn ký tự được sử dụng trên toàn thế giới. HTML5 sử dụng UTF-8 làm mã hóa ký tự theo mặc định. |