وسم Meta Charset

ما يفعله وسم meta charset، ولماذا يجب وضعه في أول 1024 بايت، وكيف تمنع مشكلة mojibake الناتجة عن تعارض ترميز HTML أو تسبّبها.

نُشر أول مرة: 2 يوليو 2026 · آخر تحديث: 22 أغسطس 2026 · Advanced
اللغات
دليل واحد في هذه الصفحة

يعلن وسم meta charset — <meta charset="utf-8"> — ترميز أحرف صفحتك لكي تحوّل المتصفحات وبرامج الزحف البايتات الخام إلى الأحرف الصحيحة. تشترط مواصفة HTML وقوع التصريح ضمن أول 1024 بايت من المستند، وأفضل ممارسة أن يكون أول عنصر فعلي داخل <head>. إذا كان التصريح غائبًا أو متأخرًا أو متعارضًا ظهر mojibake: أحرف ذات علامات نبرية وعلامات اقتباس منحنية وشرطات طويلة وكتابات غير لاتينية ورموز تعبيرية مشوهة، وقد يفسد ذلك ما يُعرض ويُفهرس. وهو ليس عامل ترتيب مباشرًا؛ فإرشاد Google الوحيد هو استخدام Unicode/UTF-8 حيثما أمكن. يُعد UTF-8 الترميز شبه العالمي والمطلوب في HTML5 اليوم. ويتقدم charset المرسل في رأس Content-Type من الخادم على وسم الصفحة، وهو سبب شائع لأخطاء الترحيل. وهذا أحد الوسوم التي يقرأها المتصفح ضمن مجموعة الوسوم الوصفية.

الخلاصة — يعلن <meta charset="utf-8"> ترميز أحرف المستند. وتتطلب مواصفة HTML في WHATWG أن يُسلسل التصريح كاملًا ضمن أول 1024 بايت من المستند، وأن تطابق القيمة utf-8 في HTML5؛ وأفضل ممارسة هي وضعه كأول عنصر فعلي داخل <head>. ينتج عن الترميز الغائب أو المتأخر أو غير المتطابق mojibake — أحرف ذات علامات نبرية مشوهة وعلامات اقتباس منحنية وكتابات غير لاتينية ورموز تعبيرية تالفة — وهي مشكلة في صحة العرض والفهرسة، وليست إشارة ترتيب. والعبارة العلنية الوحيدة من Google هي “use Unicode/UTF-8 where possible.” (ترجمة) «استخدم Unicode/UTF-8 حيثما أمكن». ولرأس charset المرسل من الخادم في Content-Type الأولوية على الوسم الموجود داخل المستند، وهو سبب شائع لمشكلة mojibake بعد الترحيل. لا يُسمح إلا بعنصر meta charset واحد لكل مستند، ولا أثر له في XML. وإذا وُجدت علامة ترتيب بايتات UTF-8 (BOM)، فلها الأولوية على كل شيء؛ وإلا فلرأس HTTP الأولوية على وسم الصفحة — وترتيب الأولوية الكامل أدناه.

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

ما هو الوسم

يخبر تصريح charset المحلل بالترميز الذي يستخدمه عندما يحول بايتات المستند إلى نص. وتوضح مواصفة HTML الحية لدى WHATWG الأمر: “The charset attribute specifies the character encoding used by the document. This is a character encoding declaration.” (ترجمة) «تنص المواصفة على أن سمة charset تعرّف الترميز المستخدم لقراءة المستند». أما صياغة MDN العملية فهي: “This attribute declares the document’s character encoding.” (ترجمة) «تعلن هذه السمة ترميز أحرف المستند».

الصياغة الحديثة هي الشكل المختصر:

<meta charset="utf-8">

هناك أيضًا صياغة قديمة قبل HTML5 لا تزال تراها في القوالب الأقدم:

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

كلتاهما تعلنان الشيء نفسه. في مستند HTML5 حديث لا تحتاج إلا إلى <meta charset="utf-8"> المختصر — فاستخدام الصياغتين زائد لا ضار، وتسمح المواصفة بعنصر meta واحد فقط يعلن charset لكل مستند على أي حال. (من الأفضل النظر إلى صيغة http-equiv على أنها قديمة بدل إضافتها حديثًا؛ وإذا كنت تدقق صفحة تحتوي عليها، فهي ليست معطلة، بل قديمة فحسب.)

متطلبات المواصفة التي تحتاج فعلًا إلى معرفتها

UTF-8 إلزامي عمليًا في HTML5. توضح MDN الأمر مباشرة: يجب أن “value must be an ASCII case-insensitive match for the string utf-8, because UTF-8 is the only valid encoding for HTML5 documents.” (ترجمة) «يجب أن تطابق القيمة السلسلة utf-8 من دون حساسية لحالة أحرف ASCII، لأن UTF-8 هو الترميز الصالح الوحيد لمستندات HTML5». وتذهب مواصفة WHATWG أبعد من ذلك، فتتطلب أن يكون ترميز المستند الفعلي UTF-8 مهما كان المعلن. يغطي UTF-8 أساسًا كل نظام كتابة إضافة إلى الرموز التعبيرية، ولذلك انتهى عصر ترميزات كل منطقة على حدة مثل ISO-8859-1 وWindows-1252 وShift-JIS في الأعمال الجديدة — وما بقي منها حالات توافق قديمة فقط.

يجب أن يقع ضمن أول 1024 بايت من المستند. هذا متطلب صريح في المواصفة، وليس اقتراحًا مرنًا. تقول MDN: <meta> elements which declare a character encoding must be located entirely within the first 1024 bytes of the document.” (ترجمة) «يجب أن تقع عناصر <meta> التي تعلن ترميز الأحرف بالكامل ضمن أول 1024 بايت من المستند». والسبب ميكانيكي — يفحص المحلل تيار البايتات بحثًا عن ترميز قبل أن يستطيع تفسير بقية المستند بأمان. وإذا ظهر تصريحك متأخرًا فقد يكون المحلل قد التزم بترميز مخمن أو يضطر إلى البدء من جديد، بما يكلف أداءً. انتبه إلى الصياغة: المقصود أول 1024 بايت من المستند كله، لا <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

أفضل ممارسة تتجاوز الحد الأدنى للمواصفة: اجعله الابن الأول لـ<head>. لا تكتفِ بكونه “في مكان ما ضمن أول 1024 بايت” — ضع <meta charset="utf-8"> قبل <title> و<link> و<script> و<style> وكل وسم آخر. هذا هو الموضع الذي تفحصه الأدوات الحديثة. توجد مشكلة Lighthouse (#10023) مفتوحة تقترح تدقيقًا يتحقق تحديدًا من مساواة <meta charset> بـdocument.head.firstElementChild — أي يضع علامة على الوسم عندما لا يكون العنصر الأول الحرفي في الرأس، لا لمجرد غيابه. يتجه مسار الأدوات إلى فحص الموضع، لا الحضور فقط.

عنصر meta charset واحد فقط لكل مستند، ولا أثر لسمة charset في مستندات XML/XHTML (يُسمح بها هناك فقط لتسهيل الانتقال من XML وإليه). وهذه ملاحظة تستحق الانتباه إذا كنت تعمل على محتوى يخدمه XHTML أو قوالب قريبة من RSS/Atom.

BOM ورأس HTTP ووسم meta — ترتيب الأولوية

لا تقرأ المتصفحات وسم meta بمعزل؛ إذ تفحص خوارزمية استنتاج الترميز ثلاثة مصادر بترتيب ثابت، وتعتمد أول مصدر يقدم إجابة:

  1. علامة ترتيب بايتات UTF-8 (BOM) — بضعة بايتات في بداية الملف. إذا اكتشف المتصفح BOM، فهي تحدد الترميز بيقين ولا يُستشار أي شيء آخر.
  2. charset في رأس HTTP Content-Type، إذا أرسله الخادم ولم توجد BOM. ولهذا الرأس الأولوية على تصريح meta الموجود داخل المستند.
  3. تصريح <meta charset> داخل المستند (أو http-equiv القديم)، ولا يُفحص إلا إذا لم يقدم المصدران السابقان ترميزًا.
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

عمليًا، نادرًا ما تظهر BOM في HTML المكتوب يدويًا (وهي أكثر شيوعًا كأثر من محررات نصية معينة أو أدوات تصدير الملفات)، لذلك فإن تعارض الرأس والوسم هو الأكثر إزعاجًا: قد تظل صفحة تعلن <meta charset="utf-8"> بصورة صحيحة تعرض نصًا مشوهًا إذا أرسل CDN أو وكيل عكسي أو خادم مهيأ خطأً charset مختلفًا في الرأس. وهذه علامة كلاسيكية بعد ترحيل خادم أو CDN — لم تتغير HTML، لكن الرأس تغير، وأصبح يحارب الوسم. وعندما تدقق في mojibake، افحص BOM وcharset في رأس الاستجابة، لا مصدر الصفحة فقط.

هل meta charset عامل ترتيب في SEO؟

لا — ومن الجدير أن نكون صريحين لأن نصوص أدوات التدقيق المبنية على الخوف توحي أحيانًا بغير ذلك. هذا شرط سابق لصحة العرض والفهرسة، وليس إشارة ترتيب.

إرشادات Google هنا قليلة وغير مباشرة مقارنة بالوسوم التي تناقشها باستمرار (العنوان والوصف التعريفي وrobots وcanonical). لا توجد صفحة مخصصة في Google Search Central عن ترميز الأحرف — بل هو إدخال داخل مرجع وسوم meta التي تدعمها Google، تحت “Content-Type and charset”. والعبارة المسجلة الوحيدة من Google توصية لا ادعاء ترتيب: “We recommend using Unicode/UTF-8 where possible.” (ترجمة) «نوصي باستخدام Unicode/UTF-8 حيثما أمكن». ولم يظهر في الصحافة المتخصصة أو أرشيفات Search Off the Record تصريح حرفي من Mueller أو Illyes أو Splitt أو Canel يسمي “meta charset” أو “mojibake” تحديدًا — إذ يُعامل charset على أنه نظافة أساسية لمعايير الويب، مثل الترميز الصحيح، لا موضوعًا يستحق تعليق SEO.

لا تملك Bing أيضًا موقفًا عامًا مميزًا من الوسم على الصفحة؛ فوثائقها تشير إلى UTF-8 فقط في صيغ API/feed الخاصة بها (ملفات مفاتيح IndexNow ورؤوس طلب Webmaster API)، لا بوصفه إرشادًا عن <meta charset> في صفحاتك. وبما أن Bingbot محلل HTML قياسي، فالنتيجة العملية نفسها: اتبع قاعدة UTF-8/1024 بايت في مواصفة HTML.

فأين يمكن أن يضرك؟ بصورة غير مباشرة، وفقط عندما يكون الترميز معطوبًا فعلًا: النص المشوه مشكلة جودة محتوى وتجربة مستخدم، وقد يفسد ما يظهر في المقتطفات، كما قد يبدو الناتج شديد الفساد مكسورًا لأنظمة فهرسة Google أيضًا. ويضع إجماع المجال، كما يشرح دليل Ahrefs عن وسوم meta (بقلم Joshua Hardwick)، الأمر هكذا: “unless your page is severely broken as a result of charset issues (which is unlikely), the impact is going to be quite minimal.” (ترجمة) «ما لم تكن صفحتك معطلة بشدة بسبب مشكلات charset — وهو أمر غير مرجح — فسيكون الأثر محدودًا جدًا». أصلحه لأن النص المكسور سيئ، لا لأنك تتوقع دفعة في الترتيب.

كيفية فحصه وإصلاحه

مسار تشخيص سريع عندما تشك في مشكلة ترميز:

  • View Source / DevTools. تأكد من وجود <meta charset="utf-8"> وأنه الابن الأول لـ<head>. وفي DevTools، افحص رأس استجابة Content-Type بحثًا عن قيمة charset — فإذا خالف الوسم، فالرأس هو الفائز وعلى الأرجح سبب المشكلة. واستبعد BOM أيضًا: فهي أندر، لكنها إن وجدت تتغلب على الرأس والوسم معًا.
  • تضع أدوات التحقق وبرامج الزحف علامة عليه. سيشير مدقق W3C والمدققات القائمة على القواعد (مثل قاعدة «ظهور charset بعد أول 1024 بايت» في Rocket Validator) إلى التصريح المتأخر أو الغائب. كما تعرض عمليات تدقيق المواقع في Ahrefs Site Audit وScreaming Frog مشكلات charset عبر موقع كامل.
  • أصلح الطبقة الصحيحة. إذا كان الموضع خاطئًا، فانقل الوسم إلى أعلى الرأس. وإذا كان الترميز خاطئًا (البايتات نفسها ليست UTF-8 أو يرسل الرأس charset متعارضًا)، فلن يفيد إصلاح وسم meta وحده — يجب إعادة ترميز الملف إلى UTF-8 و/أو تصحيح رأس Content-Type في الخادم كي يتوافق الرأس والوسم.

يكون الإصلاح غالبًا بسيطًا جدًا بعد تحديد الطبقة المسببة. فهذا جزء مستقر ومحسوم منذ زمن من مواصفة HTML — لا يوجد إيقاف حديث أو تغير في سلوك منصة يجب تتبعه؛ والتفصيل الوحيد المتطور هو أن الأدوات تتحقق أكثر فأكثر من الموضع، لا الحضور فقط.

موضع هذا الوسم ضمن المنظومة

وسم charset من عناصر الرأس الموجهة إلى المتصفح — مثل وسم viewport، فهو يتعلق بالعرض لا الترتيب، ولذلك يقع في فئة مختلفة عن الوسوم الفعالة في SEO ضمن مجموعة meta-tags (عنصر العنوان والوصف التعريفي وعائلة robots). وهو مجاور للعمل الدولي الذي أخصص له وقتًا كبيرًا: الترميز طبقة تأسيسية تسبق hreflang والمحتوى متعدد أنظمة الكتابة — يخبر hreflang Google بأي نسخة لغة/منطقة تقدم، لكن إذا كان الترميز خاطئًا فسيكون نص تلك النسخة مشوهًا مهما كان الأمر. ولخريطة عناصر الرأس الكاملة مجمعة حسب وظيفتها، راجع بوابة وسوم meta.

Add an expert note

Pin an expert quote

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