it-swarm.asia

<meta charset = "utf-8"> مقابل <meta http-equiv = "Content-Type">

من أجل تحديد charset لـ HTML5 Doctype ، ما هي الرموز التي يجب استخدامها؟

  1. قصيرة:

    <meta charset="utf-8" /> 
    
  2. طويل:

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

في HTML5 ، فهي مكافئة. استخدام أقصر واحد ، فمن الأسهل أن نتذكر والكتابة. دعم المتصفح جيد لأنه تم تصميمه للتوافق مع الإصدارات السابقة.

1037
Quentin

كلا النموذجين من meta charset declaration متماثلان ويجب أن يعملما على نفس المتصفحات. ولكن ، هناك بعض الأشياء التي تحتاج إلى تذكرها عند الإعلان عن تعيين أحرف ملفات الويب على أنها UTF-8:

  1. احفظ ملفك (ملفاتك) بترميز UTF-8 بدون / علامة ترتيب البايت (BOM).
  2. قم بتعريف الترميز في ملفات HTML الخاصة بك باستخدام مجموعة الأحرف الوصفية (مثل أعلاه).
  3. خادم الويب الخاص بك يجب تقديم الملفات الخاصة بك ، معلنا ترميز UTF-8 في رأس HTTP Content-Type.

يتم تكوين خوادم Apache لخدمة الملفات في ISO-8859-1 بشكل افتراضي ، لذلك تحتاج إلى إضافة السطر التالي إلى ملف .htaccess:

AddDefaultCharset UTF-8

سيؤدي هذا إلى تكوين Apache لخدمة ملفاتك التي تعلن عن تشفير UTF-8 في رأس استجابة Content-Type ، ولكن ملفاتك يجب يتم حفظها في UTF-8 (بدون BOM) لتبدأ.

لا يمكن لـ "المفكرة" حفظ ملفاتك في UTF-8 بدون BOM. محرر مجاني يمكنه Notepad ++ . في شريط قائمة البرامج ، حدد "تشفير> تشفير في UTF-8 بدون BOM". يمكنك أيضًا فتح الملفات وإعادة حفظها في UTF-8 باستخدام "Encoding> Convert to UTF-8 بدون BOM".

المزيد عن علامة ترتيب البايت (BOM) في ويكيبيديا .

245
CodeBoy

سبب آخر للذهاب مع القصير هو أنه يطابق الحالات الأخرى حيث يمكنك تحديد مجموعة أحرف في الترميز. فمثلا:

<script type="javascript" charset="UTF-8" src="/script.js"></script>

<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>

يساعد التناسق على تقليل الأخطاء وجعل التعليمات البرمجية أكثر قابلية للقراءة.

لاحظ أن سمة charset غير حساسة لحالة الأحرف. يمكنك استخدام UTF-8 أو utf-8 ، ومع ذلك فإن UTF-8 أكثر وضوحًا ، وأكثر قابلية للقراءة ، وأكثر دقة.

أيضًا ، لا يوجد أي سبب على الإطلاق لاستخدام أي قيمة أخرى غير UTF-8 في سمة مجموعة الحروف الوصفية أو رأس الصفحة. UTF-8 هو الترميز الافتراضي لمستندات الويب منذ HTML4 في عام 1999 والطريقة العملية الوحيدة لإنشاء صفحات الويب الحديثة.

كما يجب عليك عدم استخدام كيانات HTML في UTF-8. يجب كتابة أحرف مثل رمز حقوق الطبع والنشر مباشرةً. الكيانات الوحيدة التي يجب عليك استخدامها هي للأحرف الخمسة المحجوزة: أقل من ، أكبر من ، علامة الضم ، الأعداد الأولية ، المزدوجة. تحتاج الكيانات إلى محلل HTML ، والذي قد لا ترغب دائمًا في استخدامه للمضي قدمًا ، فهو يقدم أخطاء ، ويجعل الكود أقل قابلية للقراءة ، ويزيد حجم ملفاتك ، وأحيانًا يقوم بفك الشفرة بشكل غير صحيح في مختلف المتصفحات اعتمادًا على الكيانات التي استخدمتها. تعرّف على كيفية كتابة/إدراج حقوق الطبع والنشر والعلامة التجارية والاقتباس المفتوح وإغلاق علامة اقتباس والعلامة الفاصلة و em dash و en dash و bullet و Euro وأي أحرف أخرى تصادفها في المحتوى الخاص بك ، واستخدام تلك الأحرف الفعلية في التعليمات البرمجية الخاصة بك. يحتوي Mac على "عارض الأحرف" الذي يمكنك تشغيله في "تفضيلات نظام لوحة المفاتيح" ، ويمكنك العثور على الأحرف التي تحتاجها ثم سحبها وإفلاتها ، أو استخدام "عارض لوحة المفاتيح" المطابق لمعرفة المفاتيح التي ستكتبها. على سبيل المثال ، العلامة التجارية هي الخيار + 2. يحتوي UTF-8 على جميع الشخصيات والرموز من كل لغة بشرية مكتوبة. لذلك ليس هناك عذر لاستخدام - بدلاً من شرطة em. إنها ليست فكرة سيئة أن تتعلم قواعد علامات الترقيم والطباعة أيضًا ... على سبيل المثال ، مع العلم أن فترة ما تدخل ضمن اقتباس مقرب وليس خارجًا.

يعد استخدام علامة لشيء مثل نوع المحتوى والترميز أمرًا مثيرًا للسخرية للغاية ، لأنه بدون معرفة هذه الأشياء ، لا يمكنك تحليل الملف للحصول على قيمة علامة التعريف.

لا، هذا ليس صحيحا. يبدأ المستعرض في تحليل الملف كتشفير افتراضي للمتصفح ، إما UTF-8 أو ISO-8859-1. نظرًا لأن US-ASCII هو مجموعة فرعية من كل من ISO-8859-1 و UTF-8 ، يمكن للمتصفح قراءة ما يرام في كلتا الحالتين ... هو نفسه. عندما يواجه المستعرض علامة charset الوصفية ، إذا كان الترميز مختلفًا عن ما يستخدمه المتصفح بالفعل ، فإن المتصفح يعيد تحميل الصفحة في الترميز المحدد. هذا هو السبب في أننا نضع علامة charset الوصفية في الأعلى ، مباشرة بعد علامة head ، قبل أي شيء آخر ، حتى العنوان. بهذه الطريقة يمكنك استخدام أحرف UTF-8 في عنوانك.

يجب عليك حفظ ملفك (ملفاتك) بترميز UTF-8 بدون BOM

هذا ليس صحيحا تماما. إذا كان لديك فقط أحرف US-ASCII في وثيقتك ، فيمكنك حفظها كـ US-ASCII وخدمتها كـ UTF-8 ، لأنها مجموعة فرعية. ولكن إذا كانت هناك أحرف Unicode ، فأنت صحيح ، يجب عليك حفظ كـ UTF-8 بدون BOM.

إذا كنت تريد محرر نصوص جيدًا سيوفر ملفاتك في UTF-8 ، أوصي بـ Notepad ++.

على نظام Mac ، استخدم Bare Bones TextWrangler (مجانًا) من Mac App Store ، أو Bare Bones BBEdit الموجود في متجر تطبيقات Mac مقابل 39.99 دولارًا ... رخيص جدًا لمثل هذه الأداة الرائعة. في أي من التطبيقين ، توجد قائمة في الجزء السفلي من نافذة المستند حيث يمكنك تحديد ترميز المستند ويمكنك بسهولة اختيار "UTF-8 no BOM". وبالطبع يمكنك تعيين ذلك كإعداد افتراضي للمستندات الجديدة في التفضيلات.

ولكن إذا كان خادم الويب الخاص بك يقدم الترميز في رأس HTTP ، وهو أمر موصى به ، فستكون كلتا [علامات التعريف] غير ضرورية.

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

AddDefaultCharset UTF-8

أو يمكنك فقط تغيير تشفير أنواع ملفات معينة مثل:

AddType text/html;charset=utf-8 html

نصيحة لتقديم كل من ملفات UTF-8 و Latin-1 (ISO-8859-1) هي إعطاء ملفات UTF-8 ملحق "نص" وملفات Latin-1 "txt".

AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text

أخيرًا ، فكر في حفظ مستنداتك باستخدام نهايات خطوط Unix ، وليس نهايات DOS القديمة أو (كلاسيكية) Mac line ، والتي لا تساعد وقد تتضرر ، خاصةً أسفل الخط مع تقدمنا ​​أكثر فأكثر من تلك الأنظمة القديمة. تعد وثيقة HTML ذات نهايات HTML5 صالحة وترميز UTF-8 ونهايات خطوط يونكس مهمة جيدة. يمكنك مشاركة وتحرير وتخزين وقراءة واسترداد والاعتماد على هذا المستند في العديد من السياقات. انها لغة مشتركة. انها ورقة رقمية.

81
Simon White

تم تقديم <meta charset="utf-8"> مع/لـ HTML5.

كما هو مذكور في الوثائق ، كلاهما صالح. ومع ذلك ، فإن <meta charset="utf-8"> مخصص فقط لـ HTML5 (وأسهل الكتابة/التذكر).

في الوقت المناسب ، لا بد من إهمال النمط القديم في المستقبل القريب. سألتزم بـ <meta charset="utf-8"> الجديد.

هناك طريقة واحدة فقط ، ولكن للأعلى. في حالة التقنية ، يتم التخلص التدريجي من القديم (حقًا ، سريع حقًا)

Documentation:HTML meta charset Attribute — W3Schools

30
Omar

على الرغم من عدم خوض الإجابات الأخرى ، أعتقد أن ما يلي جدير بالذكر.

  1. تدوين "الطويل" (http-equiv) والرمز "القصير" متساويان ، أيهما يأتي أولاً يفوز ؛
  2. ستتجاوز رؤوس خادم الويب جميع علامات <meta> ؛
  3. BOM (علامة ترتيب البايت) ستتجاوز كل شيء ، وفي كثير من الحالات سوف تؤثر على html 4 (وربما أشياء أخرى أيضًا) ؛
  4. إذا لم تعلن عن أي تشفير ، فستحصل على الأرجح على نصك في "ترميز النص الاحتياطي" الذي يعرف متصفحك. لا في Firefox ولا في Chrome ، فهو utf-8 ؛
  5. في حالة عدم وجود أدلة أخرى ، سيحاول المستعرض قراءة المستند كما لو كان في ASCII للحصول على الترميز ، لذلك لا يمكنك استخدام أي ترميزات غريبة (utf-16 مع BOM ينبغي أن تفعل ، على الرغم من) .
  6. بينما تقول المواصفات أن إعلان الترميز يجب أن يكون ضمن البايت 512 الأولى من المستند ، فإن معظم المتصفحات ستحاول قراءة أكثر من ذلك.

يمكنك الاختبار عن طريق تشغيل echo 'HTTP/1.1 200 OK\r\nContent-type: text/html; charset=windows-1251\r\n\r\n\xef\xbb\xbf<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta charset="windows-1251"><title>привет</title></head><body>привет</body></html>' | nc -lp 4500 وتوجيه متصفحك إلى localhost:4500. (بالطبع سترغب في تغيير الأجزاء أو إزالتها. الجزء BOM هو \xef\xbb\xbf. كن حذرًا من ترميز Shell.)

يرجى الانتباه إلى أنه من المهم جدًا أن تعلن الترميز بشكل صريح. إن ترك المتصفحات تخمينًا قد يؤدي إلى مشكلات أمنية.

17
squirrel

استخدم <meta charset="utf-8" /> لمتصفحات الويب عند استخدام HTML5.

استخدم <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> عند استخدام HTML4 أو XHTML ، أو لمحللات dom قديمة ، مثل DOMDocument في php 5.3

10
Timo Huovinen

هناك بعض الأخبار بناءً على مؤسسة Mozilla و و/- sitepoint

لا تستخدم هذه القيمة (http-equiv=content-type) لأنها قديمة. تفضل السمة charset على عنصر <meta>.  enter image description here

2
user10089632