Hướng dẫn which encoding is best for html? - mã hóa nào là tốt nhất cho html?

Câu hỏi

Làm thế nào tôi nên khai báo mã hóa tệp HTML của tôi?

Show

Bạn phải luôn chỉ định mã hóa được sử dụng cho trang HTML hoặc XML. Nếu bạn không, bạn có nguy cơ rằng các nhân vật trong nội dung của bạn được giải thích không chính xác. Đây không chỉ là một vấn đề về khả năng đọc của con người, ngày càng cần phải hiểu dữ liệu của bạn. Một khai báo mã hóa ký tự cũng là cần thiết để xử lý các ký tự không phải ASCII được nhập bởi người dùng trong các biểu mẫu, trong các URL được tạo bởi các tập lệnh, v.v. Bài viết này mô tả cách làm điều này cho một tệp HTML.

Nếu bạn cần hiểu rõ hơn về các nhân vật và mã hóa nhân vật là gì, hãy xem bài viết mã hóa ký tự cho người mới bắt đầu. Để biết thông tin về việc khai báo mã hóa cho các bảng kiểu CSS, hãy xem các khai báo mã hóa ký tự CSS.

Bạn nên luôn luôn sử dụng mã hóa ký tự UTF-8. (Hãy nhớ rằng điều này có nghĩa là bạn cũng cần lưu nội dung của mình dưới dạng UTF-8.) Xem những gì bạn nên xem xét nếu bạn thực sự không thể sử dụng UTF-8. Nếu bạn có quyền truy cập vào cài đặt máy chủ, bạn cũng nên xem xét liệu có hợp lý khi sử dụng tiêu đề HTTP hay không.

Tôi có nên sử dụng UTF không





...




...

UTF-16, rõ ràng, hiệu quả hơn cho A) các ký tự mà UTF-16 yêu cầu mã hóa ít hơn để mã hóa so với UTF-8. UTF-8, rõ ràng, hiệu quả hơn cho b) các ký tự mà UTF-8 yêu cầu mã hóa ít hơn để mã hóa so với UTF-16.

Là html ascii hoặc utf

Nếu bạn có quyền truy cập vào cài đặt máy chủ, bạn cũng nên xem xét liệu có hợp lý khi sử dụng tiêu đề HTTP hay không. Tuy nhiên, lưu ý rằng, vì tiêu đề HTTP có mức độ ưu tiên cao hơn so với các khai báo meta trong tài liệu, nên các tác giả nội dung phải luôn tính đến việc liệu mã hóa ký tự có được khai báo trong tiêu đề HTTP hay không. Nếu có, phần tử meta phải được đặt để khai báo cùng một mã hóa.Note however that, since the HTTP header has a higher precedence than the in-document meta declarations, content authors should always take into account whether the character encoding is already declared in the HTTP header. If it is, the meta element must be set to declare the same encoding.

Bạn có thể phát hiện bất kỳ mã hóa nào được gửi bởi tiêu đề HTTP bằng trình kiểm tra quốc tế hóa.

Bạn nên luôn luôn sử dụng mã hóa ký tự UTF-8. (Hãy nhớ rằng điều này có nghĩa là bạn cũng cần lưu nội dung của mình dưới dạng UTF-8.) Xem những gì bạn nên xem xét nếu bạn thực sự không thể sử dụng UTF-8. Nếu bạn có quyền truy cập vào cài đặt máy chủ, bạn cũng nên xem xét liệu có hợp lý khi sử dụng tiêu đề HTTP hay không.

Tôi có nên sử dụng UTF không

UTF-16, rõ ràng, hiệu quả hơn cho A) các ký tự mà UTF-16 yêu cầu mã hóa ít hơn để mã hóa so với UTF-8. UTF-8, rõ ràng, hiệu quả hơn cho b) các ký tự mà UTF-8 yêu cầu mã hóa ít hơn để mã hóa so với UTF-16.

Là html ascii hoặc utf

Tiêu chuẩn HTML5: Unicode UTF-8 Các bao gồm tiêu chuẩn Unicode (gần như) tất cả các ký tự, dấu chấm câu và biểu tượng trên thế giới. Unicode cho phép xử lý, lưu trữ và vận chuyển văn bản độc lập với nền tảng và ngôn ngữ. Mã hóa ký tự mặc định trong HTML-5 là UTF-8.

Hầu hết các thư viện không chứa nhiều tài liệu ngoại ngữ sẽ hoàn toàn ổn với định dạng mã hóa ISO8859-1 (còn gọi là Latin-1 hoặc ASCII mở rộng), nhưng nếu bạn có nhiều tài liệu ngoại ngữ, bạn nên chọn UTF- 8 Vì điều đó cung cấp quyền truy cập vào nhiều nhân vật nước ngoài hơn.

Thông tin chi tiếtbut in conjunction with an in-document declaration.

Thế còn dấu hiệu thứ tự byte?

Nếu bạn có nhãn hiệu thứ tự Byte (BOM) UTF-8 khi bắt đầu tệp của bạn thì các phiên bản trình duyệt gần đây ngoài Internet Explorer 10 hoặc 11 sẽ sử dụng để xác định rằng việc mã hóa trang của bạn là UTF-8. Nó có ưu tiên cao hơn bất kỳ tuyên bố nào khác, bao gồm cả tiêu đề HTTP.

Bạn có thể bỏ qua khai báo mã hóa meta nếu bạn có BOM, nhưng chúng tôi khuyên bạn nên giữ nó, vì nó giúp mọi người nhìn vào mã nguồn để xác định mã hóa của trang là gì.

Đọc thêm về nhãn hiệu thứ tự byte.

  • Tôi có nên khai báo mã hóa trong tiêu đề HTTP không?

  • Sử dụng khai báo mã hóa ký tự trong các tiêu đề HTTP nếu nó có ý nghĩa và nếu bạn có thể, đối với bất kỳ loại nội dung nào, nhưng kết hợp với khai báo trong tài liệu.

  • Các tác giả nội dung phải luôn luôn đảm bảo rằng các khai báo HTTP phù hợp với các tuyên bố trong tài liệu.

    Ưu và nhược điểm của việc sử dụng tiêu đề HTTP

Vậy tôi có nên sử dụng phương pháp này không?

Nếu phục vụ các tệp qua HTTP từ máy chủ, việc gửi thông tin về mã hóa ký tự của tài liệu trong tiêu đề HTTP trong tiêu đề HTTP là có vấn đề gì, miễn là thông tin đó là chính xác.

Mặt khác, vì những nhược điểm được liệt kê ở trên, chúng tôi khuyên bạn nên luôn luôn khai báo thông tin mã hóa bên trong tài liệu. Một tuyên bố trong tài liệu cũng giúp các nhà phát triển, người thử nghiệm hoặc người quản lý sản xuất dịch thuật muốn kiểm tra trực quan mã hóa tài liệu.

. Lưu ý rằng điều này thường có nghĩa là thực hiện hành động để vô hiệu hóa bất kỳ mặc định máy chủ nào.)

Làm việc với các định dạng Polyglot và XML

XHTML5: Tài liệu XHTML5 được phục vụ là XML và có cú pháp XML. Trình phân tích cú pháp XML không nhận ra các khai báo mã hóa trong các yếu tố meta. Họ chỉ nhận ra tuyên bố XML. Đây là một ví dụ: An XHTML5 document is served as XML and has XML syntax. XML parsers do not recognise the encoding declarations in meta elements. They only recognise the XML declaration. Here is an example:





...
3

Tuyên bố XML chỉ được yêu cầu nếu trang không được phục vụ là UTF-8 (hoặc UTF-16), nhưng có thể hữu ích khi bao gồm nó để các nhà phát triển, người thử nghiệm hoặc người quản lý sản xuất dịch có thể kiểm tra trực quan việc mã hóa tài liệu bằng cách nhìn vào nguồn.

Polyglot đánh dấu: Một trang sử dụng PolyGlot Markup sử dụng một tập hợp con HTML với cú pháp XML có thể được phân tích cú pháp bằng HTML hoặc trình phân tích cú pháp XML. Nó được mô tả trong đánh dấu polyglot: một hồ sơ mạnh mẽ của từ vựng HTML5. A page that uses polyglot markup uses a subset of HTML with XML syntax that can be parsed either by an HTML or an XML parser. It is described in Polyglot Markup: A robust profile of the HTML5 vocabulary.

Vì một tài liệu polyglot phải ở UTF-8, bạn không cần phải, và thực sự không phải, sử dụng khai báo XML. Mặt khác, nếu tệp được đọc là HTML, bạn sẽ cần phải khai báo mã hóa bằng phần tử meta, dấu đặt hàng byte hoặc tiêu đề HTTP.

Vì một tuyên bố trong phần tử meta sẽ chỉ được công nhận bởi trình phân tích cú pháp HTML, nếu bạn sử dụng phương pháp này với thuộc tính content, giá trị của nó sẽ bắt đầu bằng





...
7.





...
8

Nếu bạn sử dụng phần tử meta với thuộc tính charset thì đây không phải là thứ bạn cần xem xét.

Bạn nên luôn luôn sử dụng mã hóa ký tự UTF-8. (Hãy nhớ rằng điều này có nghĩa là bạn cũng cần lưu nội dung của mình dưới dạng UTF-8.) Xem những gì bạn nên xem xét nếu bạn thực sự không thể sử dụng UTF-8. Nếu bạn có quyền truy cập vào cài đặt máy chủ, bạn cũng nên xem xét liệu có hợp lý khi sử dụng tiêu đề HTTP hay không.

Tôi có nên sử dụng UTF không

UTF-16, rõ ràng, hiệu quả hơn cho A) các ký tự mà UTF-16 yêu cầu mã hóa ít hơn để mã hóa so với UTF-8. UTF-8, rõ ràng, hiệu quả hơn cho b) các ký tự mà UTF-8 yêu cầu mã hóa ít hơn để mã hóa so với UTF-16.

Là html ascii hoặc utf

Cho đến gần đây, Cơ quan đăng ký IANA là nơi tìm tên cho mã hóa. Cơ quan đăng ký IANA thường bao gồm nhiều tên cho cùng một mã hóa. Trong trường hợp này, bạn nên sử dụng tên được chỉ định là 'ưa thích'.

Thông số kỹ thuật mã hóa mới hiện cung cấp một danh sách đã được kiểm tra đối với việc triển khai trình duyệt thực tế. Bạn có thể tìm thấy danh sách trong bảng trong phần gọi là mã hóa. Tốt nhất là sử dụng các tên trong cột bên trái của bảng đó.

Tuy nhiên, lưu ý rằng sự hiện diện của một tên trong một trong hai nguồn này không nhất thiết có nghĩa là sử dụng mã hóa đó là ổn. Một số mã hóa là có vấn đề. Nếu bạn thực sự không thể sử dụng UTF-8, bạn nên xem xét cẩn thận lời khuyên trong bài viết chọn và áp dụng mã hóa ký tự., however, that the presence of a name in either of these sources doesn't necessarily mean that it is OK to use that encoding. Several of the encodings are problematic. If you really can't use UTF-8, you should carefully consider the advice in the article Choosing & applying a character encoding.

Không phát minh ra tên mã hóa của riêng bạn trước meta1. Đây là một ý tưởng tồi vì nó hạn chế khả năng tương tác.

Làm việc với các định dạng HTML kế thừa

HTML & NBSP; 4.01 không chỉ định việc sử dụng thuộc tính charset với phần tử meta, nhưng bất kỳ trình duyệt chính nào gần đây vẫn sẽ phát hiện nó và sử dụng nó, ngay cả khi trang được khai báo là HTML4 thay vì HTML5. Phần này chỉ có liên quan nếu bạn có một số lý do khác ngoài việc phục vụ cho một trình duyệt để phù hợp với định dạng HTML cũ hơn. Nó mô tả bất kỳ sự khác biệt từ phần chi tiết ở trên.

Đối với các trang được dùng làm XML, xem làm việc với các định dạng Polyglot và XML.

HTML4: Như đã đề cập ở trên, bạn cần sử dụng Chỉ thị Pragma để phù hợp với HTML & NBSP; 4.01, thay vì thuộc tính charset. As mentioned just above, you need to use the pragma directive for full conformance with HTML 4.01, rather than the charset attribute.

XHTML 1.x được dùng dưới dạng văn bản/HTML: Cũng cần Chỉ thị Pragma để phù hợp với HTML & NBSP; 4.01, thay vì thuộc tính charset. Bạn không cần phải sử dụng khai báo XML, vì tệp đang được phục vụ là HTML. Also needs the pragma directive for full conformance with HTML 4.01, rather than the charset attribute. You do not need to use the XML declaration, since the file is being served as HTML.

XHTML 1.x được dùng dưới dạng XML: Sử dụng khai báo meta6 của Tuyên bố XML trên dòng đầu tiên của trang. Đảm bảo không có gì trước đó, bao gồm cả không gian (mặc dù nhãn hiệu thứ tự byte là OK). Use the meta6 declaration of the XML declaration on the first line of the page. Ensure there is nothing before it, including spaces (although a byte-order mark is OK).

Thuộc tính charset trên một liên kết

HTML5 không dùng nữa việc sử dụng thuộc tính charset trên phần tử meta9 hoặc charset0, vì vậy bạn nên tránh sử dụng nó. Nó bắt nguồn từ đặc tả HTML & NBSP; 4.01 để sử dụng với các phần tử meta9, charset0 và charset3 và được cho là chỉ ra mã hóa tài liệu bạn đang liên kết.

Nó được dự định để sử dụng trên một phần tử liên kết nhúng như thế này:

Hướng dẫn which encoding is best for html? - mã hóa nào là tốt nhất cho html?
Mã xấu. Đừng sao chép!

charset4

Ý tưởng là trình duyệt sẽ có thể áp dụng mã hóa phù hợp với tài liệu mà nó truy xuất nếu không có mã hóa nào được chỉ định cho tài liệu theo bất kỳ cách nào khác.

Luôn có vấn đề với việc sử dụng thuộc tính này. Thứ nhất, nó không được hỗ trợ tốt bởi các trình duyệt chính. Một lý do để không hỗ trợ thuộc tính này là nếu các trình duyệt làm như vậy mà không có quy tắc đặc biệt bổ sung thì đó sẽ là một vectơ tấn công XSS. Thứ hai, thật khó để đảm bảo rằng thông tin là chính xác tại bất kỳ thời điểm nào. Tác giả của tài liệu chỉ ra cũng có thể thay đổi mã hóa tài liệu mà không biết. Nếu tác giả vẫn chưa chỉ định mã hóa tài liệu của họ, bây giờ bạn sẽ yêu cầu trình duyệt áp dụng mã hóa không chính xác. Và thứ ba, dù sao cũng không cần thiết nếu mọi người làm theo hướng dẫn trong bài viết này và đánh dấu tài liệu của họ đúng cách. Đó là một cách tiếp cận tốt hơn nhiều.

Cách này chỉ ra mã hóa của một tài liệu có mức độ ưu tiên thấp nhất (nghĩa là nếu mã hóa được khai báo theo bất kỳ cách nào khác, điều này sẽ bị bỏ qua). Điều này có nghĩa là bạn cũng không thể sử dụng điều này để sửa các khai báo không chính xác.

Làm việc với UTF-16

Theo kết quả của một mẫu Google gồm vài tỷ trang, ít hơn 0,01% trang trên web được mã hóa trong UTF-16. UTF-8 chiếm hơn 80% tất cả các trang web, nếu bạn bao gồm tập hợp con, ASCII và hơn 60% nếu bạn không. Bạn rất nản lòng khi sử dụng UTF-16 làm mã hóa trang của bạn.

Nếu, vì một số lý do, bạn không có lựa chọn nào khác, đây là một số quy tắc để tuyên bố mã hóa. Chúng khác với các mã hóa cho các mã hóa khác.

Thông số kỹ thuật HTML5 cấm sử dụng phần tử meta để khai báo UTF-16, vì các giá trị phải tương thích ASCII. Thay vào đó, bạn nên đảm bảo rằng bạn luôn có dấu lệnh byte khi bắt đầu tệp được mã hóa UTF-16. Trong thực tế, đây là tuyên bố trong tài liệu.

Hơn nữa, nếu trang của bạn được mã hóa là UTF-16, không khai báo tệp của bạn là "UTF-16BE" hoặc "UTF-16LE", chỉ sử dụng "UTF-16". Dấu thứ tự byte ở đầu tệp của bạn sẽ cho biết sơ đồ mã hóa là Little-endian hay Big-endian. .little-endian or big-endian. (This is because content explicitly encoded as, say, UTF-16BE should not use a byte-order mark; but HTML5 requires a byte-order mark for UTF-16 encoded pages.)

đọc thêm

  • Bắt đầu? Giới thiệu các bộ ký tự và mã hóa

  • Hướng dẫn, xử lý mã hóa ký tự trong HTML và CSS

  • Các liên kết liên quan, tác giả HTML & CSS

    • Nhân vật
    • Tuyên bố mã hóa ký tự cho HTML
    • Chọn và áp dụng mã hóa ký tự
  • Các liên kết liên quan, thiết lập một máy chủ

    • Nhân vật

Mã hóa nào được ưa thích cho các tệp HTML?

Bạn nên luôn luôn sử dụng mã hóa ký tự UTF-8. (Hãy nhớ rằng điều này có nghĩa là bạn cũng cần lưu nội dung của mình dưới dạng UTF-8.) Xem những gì bạn nên xem xét nếu bạn thực sự không thể sử dụng UTF-8. Nếu bạn có quyền truy cập vào cài đặt máy chủ, bạn cũng nên xem xét liệu có hợp lý khi sử dụng tiêu đề HTTP hay không.UTF-8 character encoding. (Remember that this means you also need to save your content as UTF-8.) See what you should consider if you really cannot use UTF-8. If you have access to the server settings, you should also consider whether it makes sense to use the HTTP header.

Tôi có nên sử dụng UTF không

UTF-16, rõ ràng, hiệu quả hơn cho A) các ký tự mà UTF-16 yêu cầu mã hóa ít hơn để mã hóa so với UTF-8.UTF-8, rõ ràng, hiệu quả hơn cho b) các ký tự mà UTF-8 yêu cầu mã hóa ít hơn để mã hóa so với UTF-16.. UTF-8 is, obviously, more efficient for B) characters for which UTF-8 requires fewer bytes to encode than does UTF-16.

Là html ascii hoặc utf

Tiêu chuẩn HTML5: Unicode UTF-8 Các bao gồm tiêu chuẩn Unicode (gần như) tất cả các ký tự, dấu chấm câu và biểu tượng trên thế giới.Unicode cho phép xử lý, lưu trữ và vận chuyển văn bản độc lập với nền tảng và ngôn ngữ.Mã hóa ký tự mặc định trong HTML-5 là UTF-8.UTF-8 The Unicode Standard covers (almost) all the characters, punctuations, and symbols in the world. Unicode enables processing, storage, and transport of text independent of platform and language. The default character encoding in HTML-5 is UTF-8.

Tôi có nên sử dụng UTF không

Hầu hết các thư viện không chứa nhiều tài liệu ngoại ngữ sẽ hoàn toàn ổn với định dạng mã hóa ISO8859-1 (còn gọi là Latin-1 hoặc ASCII mở rộng), nhưng nếu bạn có nhiều tài liệu ngoại ngữ, bạn nên chọn UTF-8 Vì điều đó cung cấp quyền truy cập vào nhiều nhân vật nước ngoài hơn.if you do have a lot of foreign language materials you should choose UTF-8 since that provides access to a lot more foreign characters.