در این مقاله ما درباره ارور Avoid a character set in the meta tag صحبت خواهیم کرد و رفع این ارور باعث میشود ارور دیگری به نام Specify a character set early هم رفع شود.
خلاصهای از خطا
اولویت: کم
میزان سختی: راحت
میانگین امتیاز: ۹۹%
خطا Avoid a character set in the meta tag
character set از جمله استانداردهای بینالمللی که کاملتر از بقیه استانداردهای موجود به رفع نیازهای مربوط به تبادل اطلاعات چندزبانه پرداخته است، این character setها از قبل تعریف شده هستند و وجود آنها در صفحات تعیین کننده این است که محتویات سایت چگونه به کاربران نمایش داده شود. بسته به اینکه مقدار character set چه چیزی باشد مرورگر محتویات سایت شما را به کاربران نشان میدهد. پراستفادهترین مقدار این متاتگ UTF-8 است و البته مقادیر دیگری همانندASCII هم موجود است. متاتگ character set تقریبا همانند کد زیر است.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
این خطا به معنی عدم تعیین نوع کاراکتر نیست، متاسفانه یک وب سایت ایرانی به اشتباه مقالهای را انتشار میدهد و بقیه دوستان هم در بحث کپی کردن حرفهای هستند و نتیجه این میشود که وقتی رفع ارور Avoid a character set in the meta tag را در گوگل سرچ میکنیم از ۱۰ سایت موجود در صفحه اول ۹ تا به اشتباه نوشته اند. حتی اگر دانش کافی نداشته باشیم ولی کمی در ترجمه زبان انگلیسی کنجکاو باشیم در مییابیم که Avoid به معنای اجتناب است و Gtmetrix میگوید از متاتگ character set اجتناب کن و استفاده نکن ولی سایتهای ایرانی نوشتهاند این خطا به معنی عدم تعیین character set در صفحات است و اگر استفاده کنید این خطا رفع میشود ?
قسمتی از توضیحات Gtmetrix را بخوانید:
?Why should you avoid setting it in the meta http-equiv tag
Setting the character set in the meta http-equiv tag disables the lookahead downloader in Internet Explorer 8. Disabling the lookahead downloader can substantially increase the amount of time it takes to load your page.
Web developers should specify the CHARSET in the HTTP Content-Type response header, as this ensures that the performance benefit of the Lookahead Downloader is realized.
همانطور که خواندید gtmetrix میگوید متاتگ character set مشکلاتی در IE8 دارد و جهت افزایش زمان لود از هدر مخصوص CHARSET استفاده شود. در ادامه از توضیحات gtmetrix بخوانید:
?How to do it
In order to avoid using meta tags you must set the Character Set from the Server.
This is the most efficient method to set the character set, because you don’t need to set it for every page. Set your server to send a Content-Type header for all documents it serves that are of type text/html.
ذکر میکند که به منظور اجتناب از متاتگ، Character Set را سمت سرور تنظیم میکنیم تا هر بار لازم نباید با متاتگ Character Set در هر صفحه آن را لود کنیم و کافیست سرور یک بار ارسال کند تا به همه سندها (صفحات و فایلها) اعمال شود.
این مشکل در اکثر مواقع سبز رنگ است و خیلی کم پیش میآید سایتی با خطای Avoid a character set in the meta tagروبه رو شود چرا که در HTML5 به شکل پیشفرض از UTF-8 استفاده میشود و این موضوع باعث شده است که خیلی از مشکلات کاراکتری حل شود. حال برای رفع مشکل شما باید متاتگ character set را به شکل یک درخواست HTTP استفاده کنید چرا که برخی از مرورگرهای قدیمی همانند IE8 به پایین با چنین متاتگی مشکل دارند. پس باید به کمک زبان سمت سرور و نوع وب سرور بتوانیم به درستی یک درخواست از سمت HTTP header برای مرورگر برای تعیین مقدار character set ارسال کنیم. فقط توجه داشته باشید که وجود متاتگ character set مشکلی ایجاد نمیکند ولی بودن درخواست HTTP لازم است.
در PHP
اگر با خطای Avoid a character set in the meta tag برخورد میکنید، میتوانید از کد زیر که یک درخواست HTTP Header ارسال میکند، استفاده نمایید.
header("Content-Type: text/html; charset=utf-8");
Apache
اگر زبان سمت سرور سایت شما به غیر از PHP است باید بررسی کنید که وب سرور شما از چه نوع است، اگر از وب سرور Apache استفاده میکنید کد زیر را در htaccess وارد کنید، اگر اطلاعی از زبان سمت سرور و وب سرور ندارید به پشتیبانی هاستینگ خود تیکت بزنید.
AddType 'text/html; charset=UTF-8' html
Nginx
و یا اگر وب سرور شما nginx است کد زیر را در قسمت config سرور قرار دهید
more_set_headers -t 'text/html' 'Content-Type: text/html; charset=utf-8';
برای کسب اطلاعات بیشتر میتوانید این مقاله گوگل را مطالعه فرمایید.
مطلب قبلی : رفع خطای Avoid bad requests