Đó Meta Charset Tag

Điều gì <meta charset="utf-8"> làm, vì sao đó HTML spec wants điều này trong đó đầu tiên 1024 bytes, cách một sai encoding gây ra mojibake, và vì sao đây là một kết xuất-correctness vấn đề thay vì một xếp hạng factor.

Xuất bản lần đầu: 2 thg 7, 2026 · Cập nhật lần cuối: 8 thg 8, 2026 · Advanced
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này

Đó meta charset tag — <meta charset="utf-8"> — declares trang của bạn character encoding so các trình duyệt và các crawler turn thô bytes vào đó right characters. Đó HTML spec requires điều này trong đó đầu tiên 1024 bytes of đó document, và best practice là đó literal đầu tiên child of <head>. Nhận điều này sai (bị thiếu, muộn, hoặc một mismatched encoding) và bạn nhận mojibake: accented letters, curly quotes, em dashes, non-Latin scripts, và emoji render as garbage — mà có thể corrupt điều gì là displayed và được lập chỉ mục. Điều này không phải một trực tiếp xếp hạng factor; Google chỉ hướng dẫn là để 'dùng Unicode/UTF-8 nơi có thể.' UTF-8 là đó near-universal, spec-bắt buộc encoding cho HTML5 hôm nay. MỘT máy chủ-đã gửi Nội dung-Loại header charset overrides đó trong-trang tag, mà là một phổ biến nguồn of migration bugs. Này là một of đó trình duyệt-facing tags trong đó meta-tags cluster.

TL;DR — <meta charset="utf-8"> declares đó document character encoding. Đó WHATWG HTML spec requires đó declaration để là serialized completely trong đó đầu tiên 1024 bytes of đó document, và cho HTML5 đó giá trị phải match utf-8; best practice là placing điều này as đó literal đầu tiên child of <head>. MỘT bị thiếu, muộn, hoặc mismatched encoding produces mojibake — corrupted accented characters, curly quotes, non-Latin scripts, và emoji — mà là một kết xuất và lập chỉ mục-correctness vấn đề, không phải là tín hiệu xếp hạng. Google chỉ công khai line là “use Unicode/UTF-8 where possible.” (bản dịch) «dùng Unicode/UTF-8 nơi có thể.» MỘT máy chủ-đã gửi Content-Type charset header overrides đó trong-document tag, mà là một classic post-migration mojibake bug. Chỉ một charset meta element là được phép theo document, và điều này có không effect trong XML. MỘT UTF-8 byte-order mark (BOM), nếu present, wins over mọi thứ khác; nếu không đó HTTP header wins over đó trong-trang tag — đầy đủ precedence order dưới.

Evidence for this claim For HTML documents, the charset declaration must identify UTF-8. Scope: Modern HTML conformance requirements. Confidence: high · Verified: WHATWG HTML: Character encoding declaration Evidence for this claim The complete character-encoding declaration must occur within the first 1024 bytes of the document. Scope: HTML serialization requirement intended to make encoding available early to parsers. Confidence: high · Verified: WHATWG HTML: Specifying the document's character encoding

Điều gì tag là

Đó charset declaration tells một parser mà character encoding để dùng khi điều này turns đó document bytes vào text. Đó WHATWG HTML Living Tiêu chuẩn diễn đạt điều này plainly: “The charset attribute specifies the character encoding used by the document. This is a character encoding declaration.” (bản dịch) «Đó charset thuộc tính specifies đó character encoding dùng by đó document. Này là một character encoding declaration.» MDN’s cách diễn đạt là đó practical version: “This attribute declares the document’s character encoding.” (bản dịch) «Này thuộc tính declares đó document character encoding.»

modern syntax là ngắn form:

<meta charset="utf-8">

có cũng legacy pre-HTML5 form bạn’ll vẫn see trong older templates:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Cả hai declare giống nhau điều. On modern HTML5 document bạn chỉ cần ngắn <meta charset="utf-8"> — sử dụng cả hai là redundant, không harmful, và spec cho phép chỉ một charset-declaring meta element theo document anyway. ( http-equiv form là best thought của as legacy thay vì điều gì đó để thêm fresh; nếu bạn’re auditing trang đó có nó, nó không phải hỏng, nó chỉ old.)

spec requirements bạn thực ra cần để know

UTF-8 là effectively mandatory cho HTML5. MDN trạng thái điều này trực tiếp: đó thuộc tính “value must be an ASCII case-insensitive match for the string utf-8, because UTF-8 is the only valid encoding for HTML5 documents.” (bản dịch) «giá trị phải được an ASCII case-insensitive match cho đó string utf-8, vì UTF-8 là đó chỉ hợp lệ encoding cho HTML5 documents.» Đó WHATWG spec goes further và requires đó document thực tế encoding để là UTF-8 regardless of điều gì là declared. UTF-8 covers essentially mỗi script plus emoji, mà là vì sao đó ISO-8859-1 / Windows-1252 / Shift-JIS era of theo-region encodings là over cho new hoạt động — những survive chỉ as legacy compatibility cases.

Điều này phải land trong đó đầu tiên 1024 bytes of đó document. Này là một hard spec requirement, không một soft suggestion. MDN: <meta> elements which declare a character encoding must be located entirely within the first 1024 bytes of the document.” (bản dịch) «thẻ meta elements mà declare một character encoding phải được located hoàn toàn trong đó đầu tiên 1024 bytes of đó document.» Đó reason là mechanical — đó parser sniffs đó byte stream cho an encoding trước điều này có thể safely interpret đó rest. Nếu của bạn declaration cho thấy lên cũng muộn, đó parser có thể đã có committed để một guessed encoding (hoặc có để restart, mà costs performance). Note đó cách diễn đạt cẩn thận: đây là đó đầu tiên 1024 bytes of đó entire document, không chỉ of <head>.

Evidence for this claim The complete character-encoding declaration must occur within the first 1024 bytes of the document. Scope: HTML serialization requirement intended to make encoding available early to parsers. Confidence: high · Verified: WHATWG HTML: Specifying the document's character encoding

Best practice beats đó spec minimum: làm điều này đó đầu tiên child of <head>. không settle cho “somewhere in the first 1024 bytes” (bản dịch) «nơi nào đó trong đó đầu tiên 1024 bytes» — put <meta charset="utf-8"> trước của bạn <title>, <link>, <script>, <style>, và mỗi other tag. Này là đó placement modern tooling kiểm tra. có an open Lighthouse vấn đề (#10023) proposing an audit đó cụ thể kiểm tra liệu <meta charset> equals document.head.firstElementChild — i.e. flagging đó tag khi điều này không đó literal đầu tiên element trong head, không merely khi đây là bị thiếu. Đó direction of tooling là toward kiểm tra placement, không chỉ presence.

chỉ một charset meta element theo document, và ** charset thuộc tính có không effect trong XML/XHTML documents** (nó permitted ở đó chỉ để ease migration để và từ XML). Worth caveat nếu bạn’re hoạt động với XHTML-phân phối nội dung hoặc RSS/Atom-liền kề templates.

BOM, HTTP header, meta tag — precedence order

các trình duyệt không chỉ đọc meta tag trong isolation; encoding-sniffing algorithm kiểm tra three sources trong fixed order, và đầu tiên một đó cho câu trả lời wins:

  1. ** UTF-8 byte-order mark (BOM)** — một vài bytes tại rất bắt đầu của file. nếu trình duyệt detects BOM, đó determines encoding với certainty; không có gì khác là consulted.
  2. ** HTTP Content-Type header charset**, nếu máy chủ gửi một và có không BOM. điều này takes precedence over trong-document meta declaration.
  3. ** trong-document <meta charset> (hoặc legacy http-equiv) declaration**, checked chỉ nếu neither của trên supplied encoding.
Evidence for this claim A UTF-8 BOM takes precedence over HTTP and in-document declarations; otherwise an HTTP charset has higher precedence than meta, so server and document declarations must agree. Scope: HTML documents, HTTP delivery and rendered metadata as applicable Confidence: high · Verified: Declaring character encodings in HTML

trên thực tế, BOMs là rare on hand-authored HTML (họ’re nhiều hơn phổ biến as artifact của certain text editors hoặc file-export tools), so header-so với-tag conflict là một đó bites phần lớn thường: trang đó correctly declares <meta charset="utf-8"> có thể vẫn render garbled nếu CDN, reverse proxy, hoặc misconfigured máy chủ gửi khác charset trong header. nó kinh điển symptom right sau khi máy chủ hoặc CDN migration — HTML đã không thay đổi, nhưng header đã làm, và hiện tại header là fighting tag. Khi bạn’re gỡ lỗi mojibake, kiểm tra cho BOM và phản hồi header charset, không chỉ trang nguồn.

là meta charset SEO xếp hạng factor?

Không — và nó worth là blunt vì fear-based audit-tool copy đôi khi implies nếu không. Đây là kết xuất- và lập chỉ mục-correctness prerequisite, không xếp hạng tín hiệu.

Google hướng dẫn ở đây là thin và gián tiếp compared để đó tags điều này discusses constantly (tiêu đề, mô tả meta, robots, canonical). Có không dedicated Google Tìm kiếm Central trang về character encoding — đây là một entry bên trong đó chung meta tags Google hỗ trợ reference, dưới “Content-Type and charset.” (bản dịch) «Nội dung-Loại và charset.» Google chỉ on-record line là một khuyến nghị, không một xếp hạng claim: “We recommend using Unicode/UTF-8 where possible.” (bản dịch) «We khuyến nghị dùng Unicode/UTF-8 nơi có thể.» Không verbatim statement từ Mueller, Illyes, Splitt, hoặc Canel cụ thể naming “meta charset” (bản dịch) «meta charset» hoặc “mojibake” surfaces trong đó trade press hoặc Tìm kiếm Off đó Record archives — charset là treated as basic web-các tiêu chuẩn hygiene, bảng stakes như hợp lệ markup, thay vì một topic warranting SEO commentary.

Bing có không distinct công khai position on on-trang tag either; của nó tài liệu references UTF-8 chỉ cho của nó own API/feed formats (IndexNow mấu chốt files, Quản trị viên web API yêu cầu các header), không as hướng dẫn về HTML <meta charset> on của bạn các trang. Since Bingbot là tiêu chuẩn HTML parser, practical implication là giống nhau: follow HTML spec UTF-8 / 1024-byte rule.

So nơi có thể điều này hurt bạn? Indirectly, và chỉ khi đó encoding là genuinely hỏng: garbled text là một nội dung-quality và UX vấn đề, điều này có thể corrupt điều gì xuất hiện trong snippets, và severely hỏng output có thể look hỏng để Google lập chỉ mục các hệ thống cũng. Đó ngành consensus, as Ahrefs’ own meta-tags hướng dẫn (by Joshua Hardwick) diễn đạt điều này, là đó “unless your page is severely broken as a result of charset issues (which is unlikely), the impact is going to be quite minimal.” (bản dịch) «trừ khi trang của bạn là severely hỏng làm đó of charset các vấn đề (mà là khó có khả năng), đó impact là going để là quite minimal.» Cách sửa điều này vì hỏng text là bad, không vì bạn expect một xếp hạng bump.

Cách kiểm tra và khắc phục nó

nhanh diagnostic path Khi bạn suspect encoding vấn đề:

  • View nguồn / DevTools. Xác nhận <meta charset="utf-8"> tồn tại và là đó đầu tiên child of <head>. Trong DevTools, kiểm tra đó Content-Type header phản hồi cho một charset giá trị — nếu điều này disagrees với đó tag, đó header wins và là của bạn có khả năng culprit. Rule out một BOM cũng: đây là rarer, nhưng nếu present điều này beats cả hai đó header và đó tag.
  • Các validator và các crawler flag điều này. Đó W3C validator và rule-based checkers (e.g. Rocket Validator “charset after the first 1024 bytes” (bản dịch) «charset sau đó đầu tiên 1024 bytes» rule) sẽ call out một muộn hoặc bị thiếu declaration. Site audits trong Ahrefs Site Audit và Screaming Frog surface charset các vấn đề trên một toàn bộ site.
  • Cách sửa đó right layer. Nếu đó placement là sai, move đó tag để đó top of head. Nếu đó encoding là sai (đó bytes themselves không UTF-8, hoặc đó header gửi một conflicting charset), sửa đó meta tag alone sẽ không help — bạn có để re-encode đó file as UTF-8 và/hoặc correct đó máy chủ Content-Type header so đó header và tag agree.

khắc phục là gần như luôn trivial sau khi bạn’ve identified mà layer là tại fault. Đây là ổn định, dài-settled part của HTML spec — có không gần đây deprecation hoặc nền tảng-behavior thay đổi để track; chỉ evolving nuance là tooling increasingly kiểm tra placement, không chỉ presence.

nơi điều này sits

charset tag là một của trình duyệt-facing head elements — như viewport tag, nó về kết xuất, không xếp hạng, mà diễn đạt nó trong khác bucket từ SEO-active tags trong meta-tags cluster ( tiêu đề element, mô tả meta, và robots family). nó liền kề để internationalization hoạt động I spend lot của time on: encoding là layer underneath hreflang và multi-script nội dung — hreflang tells Google mà language/region version để phục vụ, nhưng nếu encoding là sai text trong đó version là garbled regardless. cho đầy đủ map của head elements grouped by job họ làm, see meta tags hub.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.