رمزگذاری یونیکد 2. پیش نیازهای ایجاد و توسعه یونیکد

با سلام خدمت خوانندگان عزیز سایت وبلاگ. امروز با شما در مورد اینکه کراکوزیابرها از کجا در سایت و برنامه ها آمده اند، کدگذاری متنی وجود دارد و کدام یک باید استفاده شود، صحبت خواهیم کرد. بیایید نگاهی دقیق‌تر به تاریخچه توسعه آنها بیندازیم، از ASCII پایه، و همچنین نسخه‌های توسعه‌یافته آن CP866، KOI8-R، Windows 1251 و پایان دادن به رمزگذاری‌های مدرن کنسرسیوم یونیکد UTF 16 و 8.

برای برخی، این اطلاعات ممکن است اضافی به نظر برسد، اما می‌دانید که من در مورد کراکوزیابرهای خزنده شده (مجموعه نویسه‌های غیرقابل خواندن) چقدر سؤال دریافت می‌کنم. اکنون این فرصت را خواهم داشت که همه را به متن این مقاله ارجاع دهم و به طور مستقل جم های خود را بیابم. خوب، برای جذب اطلاعات آماده شوید و سعی کنید داستان را دنبال کنید.

ASCII - رمزگذاری متن اصلی برای الفبای لاتین

توسعه رمزگذاری های متنی همزمان با شکل گیری صنعت فناوری اطلاعات صورت گرفت و در این مدت آنها توانستند دستخوش تغییرات بسیار زیادی شوند. از نظر تاریخی، همه چیز با EBCDIC شروع شد، که در تلفظ روسی تقریباً خوشایند نبود، که امکان رمزگذاری حروف الفبای لاتین، اعداد عربی و علائم نگارشی را با کاراکترهای کنترلی ممکن می کرد.

اما با این حال، نقطه شروع برای توسعه رمزگذاری متن مدرن، معروف است ASCII(کد استاندارد آمریکایی برای تبادل اطلاعات، که در روسی معمولا به عنوان "aski" تلفظ می شود). این 128 نویسه اول را توصیف می کند که بیشتر توسط کاربران انگلیسی زبان استفاده می شود - حروف لاتین، اعداد عربی و علائم نگارشی.

حتی این 128 کاراکتر توصیف شده در ASCII شامل برخی از نمادهای خدماتی مانند براکت، خطوط هش، ستاره و غیره است. در واقع، شما خودتان می توانید آنها را ببینید:

این 128 کاراکتر از نسخه اصلی ASCII هستند که به استاندارد تبدیل شدند و در هر کدگذاری دیگری مطمئناً آنها را ملاقات خواهید کرد و آنها به ترتیب قرار خواهند گرفت.

اما واقعیت این است که با کمک یک بایت اطلاعات، می توان نه 128، بلکه به اندازه 256 مقدار مختلف (دو به توان هشت برابر با 256) رمزگذاری کرد، بنابراین پس از نسخه پایهآسوکا یک سری کامل ظاهر شد رمزگذاری های ASCII توسعه یافته، که در آن علاوه بر 128 کاراکتر اصلی، امکان رمزگذاری نمادهای رمزگذاری ملی (مثلاً روسی) وجود داشت.

در اینجا، شاید ارزش داشته باشد که در مورد سیستم های اعدادی که در توضیحات استفاده می شود، کمی بیشتر صحبت کنیم. اولا، همانطور که همه شما می دانید، کامپیوتر فقط با اعداد در سیستم دودویی کار می کند، یعنی با صفر و یک ("جبر بولی"، اگر کسی به کالج یا مدرسه رفت). که هر کدام یک 2 در توان هستند که از صفر شروع می شود و در هفتم تا دو می رسد:

درک اینکه تنها 256 ترکیب ممکن از صفر و یک در چنین ساختاری وجود دارد دشوار نیست. تبدیل یک عدد از یک سیستم باینری به یک اعشاری بسیار ساده است. شما فقط باید تمام قدرت های دو را که بالاتر از آنها وجود دارد جمع کنید.

در مثال ما، این 1 (2 به توان صفر) به اضافه 8 (دو به توان 3)، به اضافه 32 (دو به توان پنجم)، به اضافه 64 (به توان ششم)، به اضافه 128 (به توان هفتم) است. مجموع 233 اینچ می شود سیستم اعشاریحساب کردن همانطور که می بینید، همه چیز بسیار ساده است.

اما اگر به جدول با کاراکترهای ASCII دقت کنید، خواهید دید که آنها در کدگذاری هگزادسیمال نشان داده شده اند. به عنوان مثال، یک ستاره با عدد هگزادسیمال 2A در آسوکا مطابقت دارد. شما احتمالا می دانید که در سیستم هگزادسیمالعلاوه بر اعداد عربی، اعداد نیز از حروف لاتین از A (به معنی ده) تا F (به معنی پانزده) استفاده می شود.

خوب، برای ترجمه عدد باینریبه هگزادسیمالبه روش ساده و شهودی زیر متوسل شوید. همانطور که در تصویر بالا نشان داده شده است، هر بایت اطلاعات به دو قسمت چهار بیتی تقسیم می شود. که در هر نیم بایت، فقط شانزده مقدار (دو تا توان چهارم) را می توان به صورت باینری کدگذاری کرد که به راحتی می توان آن را به عنوان یک عدد هگزا دسیمال نشان داد.

علاوه بر این، در نیمه سمت چپ بایت، لازم است که درجه ها را دوباره از صفر شروع کنید، نه همانطور که در تصویر نشان داده شده است. در نتیجه، با برخی از محاسبات ساده، دریافتیم که عدد E9 در تصویر کدگذاری شده است. امیدوارم مسیر استدلال من و راه حل این معما برای شما روشن شده باشد. خب، حالا بیایید ادامه دهیم، در واقع، در مورد رمزگذاری متن صحبت می کنیم.

نسخه های توسعه یافته Asuka - رمزگذاری CP866 و KOI8-R با شبه نگاری

بنابراین، ما شروع به صحبت در مورد ASCII کردیم، که، همانطور که بود، نقطه شروعی برای توسعه همه رمزگذاری های مدرن (ویندوز 1251، یونیکد، UTF 8) بود.

در ابتدا فقط شامل 128 کاراکتر از الفبای لاتین، اعداد عربی و چیزهای دیگر در آنجا بود، اما در نسخه توسعه یافته امکان استفاده از تمام 256 مقداری که می توان در یک بایت اطلاعات رمزگذاری کرد، فراهم شد. آن ها اضافه کردن نمادهایی از حروف زبان خود به Aski امکان پذیر شد.

در اینجا لازم است برای روشن شدن یک بار دیگر انحراف داشته باشیم - چرا اصلاً به رمزگذاری نیاز داریممتون و چرا آنقدر مهم است. نمادها در صفحه رایانه شما بر اساس دو چیز تشکیل می شوند - مجموعه ای از فرم های برداری (نمایش) از انواع کاراکترها (آنها در فایل های مشترک هستند) و کدی که به شما امکان می دهد از این مجموعه فرم های برداری (فونت) خارج شوید. فایل) دقیقاً نمادی است که باید در جای درست درج شود.

واضح است که خود فونت ها مسئول فرم های برداری هستند، اما سیستم عامل و برنامه های استفاده شده در آن وظیفه کدنویسی را بر عهده دارند. آن ها هر متنی در رایانه شما مجموعه ای از بایت ها خواهد بود که هر کدام یک کاراکتر از همین متن را رمزگذاری می کند.

برنامه ای که این متن را روی صفحه نمایش می دهد (ویرایشگر متن، مرورگر و غیره)، هنگام تجزیه کد، رمزگذاری کاراکتر بعدی را می خواند و فرم برداری مربوطه را در آن جستجو می کند. فایل مورد نظرفونتی که برای نمایش این سند متنی متصل شده است. همه چیز ساده و پیش پا افتاده است.

این بدان معنی است که برای رمزگذاری هر کاراکتری که نیاز داریم (مثلاً از الفبای ملی)، دو شرط باید رعایت شود - شکل برداری این کاراکتر باید با فونت استفاده شده باشد و این کاراکتر می تواند در رمزگذاری های ASCII توسعه یافته در کدگذاری شود. یک بایت بنابراین، یک دسته کامل از این گزینه ها وجود دارد. انواع مختلفی از Asuka توسعه یافته فقط برای رمزگذاری کاراکترهای زبان روسی وجود دارد.

به عنوان مثال، در ابتدا ظاهر شد CP866، که در آن امکان استفاده از حروف الفبای روسی وجود داشت و نسخه توسعه یافته ASCII بود.

آن ها قسمت بالای آن کاملاً با نسخه اصلی Asuka (128 کاراکتر لاتین، اعداد و هر چیز مزخرفی) مطابقت داشت که در تصویر بالا ارائه شده است، اما قسمت پایین جدول با رمزگذاری CP866 نمای نشان داده شده در تصویر را داشت. درست در زیر و مجاز به رمزگذاری 128 علامت دیگر (حروف روسی و انواع شبه گرافیک):

ببینید، در ستون سمت راست، اعداد با 8 شروع می شوند، زیرا اعداد 0 تا 7 به بخش اصلی ASCII اشاره دارند (نگاه کنید به تصویر اول). که حرف روسی "M" در CP866 دارای کد 9C خواهد بود (در تقاطع خط مربوطه با 9 و ستون با عدد C در نماد هگزادسیمال قرار دارد)، که می تواند در یک بایت اطلاعات نوشته شود، و اگر یک فونت مناسب با حروف روسی وجود دارد، این حرف بدون مشکل در متن نمایش داده می شود.

این مبلغ از کجا آمده است؟ شبه نگاری در CP866? نکته این است که این رمزگذاری برای متن روسی در آن سال های خزدار توسعه یافته است، زمانی که چنین گسترش سیستم عامل های گرافیکی مانند اکنون وجود نداشت. و در Dos و سیستم‌عامل‌های متنی مشابه، شبه گرافیک‌ها این امکان را فراهم می‌آورد که به نحوی طراحی متون را متنوع کنیم و بنابراین CP866 و سایر همتایان آن از دسته نسخه‌های توسعه‌یافته Asuka در آن فراوان است.

CP866 توسط IBM توزیع شد، اما علاوه بر این، تعدادی رمزگذاری برای کاراکترهای روسی توسعه داده شد، به عنوان مثال، این نوع (ASCII توسعه یافته) را می توان نسبت داد. KOI8-R:

اصل عملکرد آن مانند CP866 است که کمی پیشتر توضیح داده شد - هر کاراکتر متن با یک بایت واحد کدگذاری می شود. اسکرین شات نیمه دوم جدول KOI8-R را نشان می دهد نیمه اول کاملاً با Asuka اصلی مطابقت دارد که در اولین تصویر در این مقاله نشان داده شده است.

از جمله ویژگی های رمزگذاری KOI8-R می توان به این نکته اشاره کرد که حروف روسی در جدول آن به ترتیب حروف الفبا نیستند، همانطور که برای مثال در CP866 انجام دادند.

اگر به اولین اسکرین شات (قسمت پایه، که در تمام رمزگذاری های توسعه یافته موجود است) نگاه کنید، متوجه خواهید شد که در KOI8-R حروف روسی در همان سلول های جدول قرار دارند که حروف همخوان الفبای لاتین قرار دارند. با آنها از قسمت اول جدول. این کار برای راحتی جابجایی از حروف روسی به نویسه‌های لاتین با کنار گذاشتن تنها یک بیت (دو تا توان هفتم یا 128) انجام شد.

ویندوز 1251 - نسخه مدرن ASCII و دلیل بیرون آمدن کراکوزیابری

توسعه بیشتر رمزگذاری متن با این واقعیت همراه بود که سیستم عامل های گرافیکی در حال افزایش محبوبیت بودند و نیاز به استفاده از شبه گرافیک در آنها با گذشت زمان ناپدید شد. در نتیجه، یک گروه کامل به وجود آمد که در اصل، هنوز نسخه های توسعه یافته Asuka بودند (یک کاراکتر متن تنها با یک بایت اطلاعات رمزگذاری شده است)، اما در حال حاضر بدون استفاده از کاراکترهای شبه گرافیکی.

آنها متعلق به کدهای به اصطلاح ANSI بودند که توسط مؤسسه استانداردهای آمریکایی توسعه یافتند. در اصطلاح رایج، نام الفبای سیریلیک هنوز برای نسخه با پشتیبانی از زبان روسی استفاده می شد. یک مثال از این می تواند خدمت کند.

تفاوت مطلوبی با CP866 و KOI8-R که قبلاً استفاده شده بود به این دلیل بود که نمادهای شبه گرافیکی در آن توسط نمادهای گمشده تایپوگرافی روسی (به جز علامت لهجه) و همچنین نمادهای مورد استفاده در زبان های اسلاوی گرفته شد. نزدیک به روسی (اوکراینی، بلاروسی و غیره) :

به دلیل وجود چنین فراوانی رمزگذاری های زبان روسی، تولید کنندگان و تولید کنندگان فونت نرم افزارمن دائماً سردرد داشتم و من و شما، خوانندگان عزیز، اغلب از آن بدنام خلاص می شدیم کراکوزیابریزمانی که با نسخه استفاده شده در متن سردرگمی وجود داشت.

اغلب اوقات آنها هنگام ارسال و دریافت پیام از طریق خارج می شوند پست الکترونیک، که منجر به ایجاد جداول تبدیل بسیار پیچیده شد که در واقع نمی توانست این مشکل را به طور اساسی حل کند و اغلب کاربران مکاتباتی هنگام استفاده از رمزگذاری های روسی مانند CP866، KOI8-R یا Windows 1251 از کراکوزیابرهای بدنام اجتناب می کردند.

در واقع، کراکوزیابری که به جای متن روسی به بیرون خزیده شد، نتیجه بود سوء استفادهرمزگذاری ها از این زبانکه با چیزی که در آن کدگذاری شده بود مطابقت نداشت پیام متنیدر ابتدا

فرض کنید کاراکترهای کدگذاری شده با CP866 سعی می کنند با استفاده از آن نمایش داده شوند جدول کدویندوز 1251، سپس همین krakozyabry (مجموعه بی معنی از کاراکترها) ظاهر می شود و کاملاً جایگزین متن پیام می شود.

وضعیت مشابهی اغلب زمانی اتفاق می‌افتد که در انجمن‌ها یا وبلاگ‌ها، زمانی که متن با حروف روسی به اشتباه در رمزگذاری اشتباهی که در سایت پیش‌فرض استفاده می‌شود یا در یک کد اشتباه ذخیره می‌شود، رخ می‌دهد. ویرایشگر متنکه با چشم غیرمسلح قابل مشاهده نیست، به کد اضافه می کند.

در پایان، چنین وضعیتی با انبوهی از رمزگذاری ها و کراکوزیابراهای دائماً در حال ظهور خسته از بسیاری، پیش نیازهایی برای ایجاد یک تنوع جهانی جدید وجود داشت که جایگزین همه موارد موجود شود و در نهایت مشکل ریشه ای ظاهر متون ناخوانا را حل کند. . علاوه بر این، مشکل زبان هایی مانند چینی وجود داشت که نویسه های زبان بسیار بیشتر از 256 بود.

یونیکد - رمزگذاری جهانی UTF 8، 16 و 32

این هزاران کاراکتر از گروه زبان آسیای جنوب شرقی را نمی‌توان در یک بایت اطلاعات توصیف کرد، که برای رمزگذاری کاراکترها در نسخه‌های توسعه‌یافته ASCII اختصاص داده شده است. در نتیجه کنسرسیومی به نام ایجاد شد یونیکد(یونیکد - کنسرسیوم یونیکد) با همکاری بسیاری از رهبران صنعت فناوری اطلاعات (کسانی که نرم افزار تولید می کنند، سخت افزار کدنویسی می کنند، فونت ایجاد می کنند) که علاقه مند به ظهور یک رمزگذاری متن جهانی بودند.

اولین نسخه منتشر شده تحت نظارت کنسرسیوم یونیکد بود UTF 32... عدد در نام رمزگذاری به معنای تعداد بیت هایی است که برای رمزگذاری یک کاراکتر استفاده می شود. 32 بیت 4 بایت اطلاعات است که برای رمزگذاری یک کاراکتر در رمزگذاری جهانی UTF جدید مورد نیاز است.

در نتیجه، همان فایل با متن کدگذاری شده در نسخه توسعه یافته ASCII و در UTF-32، در مورد دوم، اندازه (وزن) چهار برابر بیشتر خواهد داشت. این بد است، اما اکنون این فرصت را داریم که تعداد کاراکترهای برابر با دو را با توان سی و دوم رمزگذاری کنیم ( میلیاردها شخصیت، که هر مقدار واقعا ضروری را با یک حاشیه عظیم پوشش می دهد).

اما بسیاری از کشورهای دارای زبان های گروه اروپایی نیازی به استفاده از چنین تعداد زیادی کاراکتر در رمزگذاری نداشتند، اما زمانی که از UTF-32 استفاده شد، وزن اسناد متنی را چهار برابر افزایش دادند. در نتیجه، حجم ترافیک اینترنت و حجم داده های ذخیره شده افزایش می یابد. این مقدار زیادی است و هیچ کس نمی تواند چنین ضایعاتی را بپردازد.

در نتیجه توسعه یونیکد، UTF-16، که آنقدر موفق بود که به طور پیش فرض به عنوان فضای پایه برای همه نمادهایی که استفاده می کنیم پذیرفته شد. از دو بایت برای رمزگذاری یک کاراکتر استفاده می کند. بیایید ببینیم این مورد چگونه به نظر می رسد.

V سیستم عاملویندوز، می توانید مسیر "شروع" - "برنامه ها" - "لوازم جانبی" - "ابزارهای سیستم" - "نقشه نماد" را دنبال کنید. در نتیجه جدولی با فرم های برداری از تمام فونت های نصب شده در سیستم شما باز می شود. اگر انتخاب کنید " پارامترهای اضافی»مجموعه ای از کاراکترهای یونیکد، می توانید برای هر فونت به طور جداگانه کل محدوده کاراکترهای موجود در آن را مشاهده کنید.

ضمناً با کلیک بر روی هر یک از آنها می توانید دو بایت آن را مشاهده کنید کد UTF-16متشکل از چهار رقم هگزادسیمال:

چند کاراکتر را می توان در UTF-16 با 16 بیت کدگذاری کرد؟ 65536 (دو به توان شانزده) و این عدد بود که به عنوان فضای پایه در یونیکد در نظر گرفته شد. علاوه بر این، راه هایی برای رمزگذاری با آن و حدود دو میلیون کاراکتر وجود دارد، اما به فضای گسترده یک میلیون کاراکتر متن محدود شده بود.

اما حتی این نسخه موفق رمزگذاری یونیکد رضایت زیادی برای کسانی که مثلاً برنامه ها را فقط به زبان انگلیسی می نوشتند، به همراه نداشت، زیرا پس از انتقال از نسخه توسعه یافته ASCII به UTF-16، وزن اسناد دو برابر شد (یک بایت در هر یک کاراکتر در Aski و دو بایت برای همان کاراکتر در UTP-16).

دقیقاً برای رضایت همه و همه چیز در کنسرسیوم یونیکد تصمیم گرفته شد که رمزگذاری طول متغیر... اسمش را گذاشتند UTF-8. با وجود عدد هشت در نام، واقعا طول متغیری دارد، یعنی. هر کاراکتر در متن را می توان به دنباله ای از یک تا شش بایت کدگذاری کرد.

در عمل، در UTF-8، فقط از محدوده یک تا چهار بایت استفاده می شود، زیرا فراتر از چهار بایت کد، حتی از نظر تئوری نیز چیزی قابل تصور نیست. تمام حروف لاتین موجود در آن در یک بایت کدگذاری می شوند، درست مانند ASCII خوب قدیمی.

آنچه قابل توجه است، در مورد رمزگذاری فقط الفبای لاتین، حتی برنامه هایی که یونیکد را درک نمی کنند، همچنان آنچه را که در UTF-8 رمزگذاری شده است، می خوانند. آن ها بخش اصلی Asuka به تازگی به این زاده فکری کنسرسیوم یونیکد منتقل شده است.

کاراکترهای سیریلیک در UTF-8 در دو بایت و، به عنوان مثال، نویسه های گرجی - در سه بایت کدگذاری می شوند. کنسرسیوم یونیکد پس از ایجاد UTF 16 و 8 مشکل اصلی را حل کرد - اکنون ما داریم یک فضای کد واحد در فونت ها وجود دارد... و اکنون تولید کنندگان آنها فقط می توانند آن را با فرم های برداری نمادهای متنی بر اساس نقاط قوت و قابلیت های خود پر کنند. در حال حاضر حتی در ست.

در "جدول کاراکتر" بالا می توانید ببینید که فونت های مختلف از تعداد کاراکترهای متفاوتی پشتیبانی می کنند. برخی از فونت های غنی از یونیکد می توانند بسیار سنگین باشند. اما اکنون تفاوت آنها در این نیست که برای رمزگذاری های مختلف ایجاد شده اند، بلکه در این که سازنده فونت یک فضای کد واحد را با فرم های برداری خاص تا انتها پر کرده یا پر نکرده است.

Krakozyabry به جای حروف روسی - چگونه آن را تعمیر کنیم

حال ببینیم چگونه krakozyabras به جای متن ظاهر می شود یا به عبارت دیگر چگونه رمزگذاری صحیح برای متن روسی انتخاب می شود. در واقع، در برنامه ای تنظیم می شود که در آن شما همین متن یا کد را با استفاده از قطعات متن ایجاد یا ویرایش می کنید.

برای ویرایش و ایجاد فایل های متنیمن شخصاً به نظر من از یک بسیار خوب استفاده می کنم. با این حال، می تواند سینتکس صد زبان برنامه نویسی و نشانه گذاری دیگر را برجسته کند و همچنین توانایی گسترش با استفاده از افزونه ها را دارد. خواندن بررسی دقیقاین برنامه فوق العاده از لینک ارائه شده

در منوی بالای Notepad ++ یک مورد "Encodings" وجود دارد که در آن می توانید نسخه موجود را به نسخه ای که به طور پیش فرض در سایت خود استفاده می شود تبدیل کنید:

در مورد سایت جوملا 1.5 و بالاتر و همچنین در مورد وبلاگ در وردپرس برای جلوگیری از ظاهر شدن کرک گزینه را انتخاب کنید. UTF 8 بدون BOM... پیشوند BOM چیست؟

واقعیت این است که هنگامی که کدنویسی YUTF-16 توسعه یافت، به دلایلی تصمیم گرفتند چیزی مانند توانایی نوشتن یک کد کاراکتر، هم به ترتیب مستقیم (به عنوان مثال، 0A15) و هم به صورت معکوس (150A) به آن متصل کنند. . و برای اینکه برنامه ها بفهمند کدها را در کدام دنباله بخوانند و اختراع شد BOM(Byte Order Mark یا به عبارتی امضا) که در همان ابتدای اسناد با افزودن سه بایت اضافی بیان می شد.

در رمزگذاری UTF-8، هیچ BOM در کنسرسیوم یونیکد پیش بینی نشده است، و بنابراین اضافه کردن یک امضا (این بدنام ترین سه بایت اضافی به ابتدای سند) به سادگی از خواندن کد برخی از برنامه ها جلوگیری می کند. بنابراین، هنگام ذخیره فایل ها در UTP، همیشه باید گزینه بدون BOM (بدون امضا) را انتخاب کنیم. بنابراین شما پیشروی می کنید خود را از خزیدن از krakozyabrov محافظت کنید.

نکته قابل توجه این است که برخی از برنامه های ویندوز نمی توانند این کار را انجام دهند (نمی توانند متن را در UTP-8 بدون BOM ذخیره کنند)، به عنوان مثال، Notepad بدنام ویندوز. سند را در UTF-8 ذخیره می کند، اما همچنان یک امضا (سه بایت اضافی) به ابتدا اضافه می کند. علاوه بر این، این بایت ها همیشه یکسان خواهند بود - کد را به ترتیب مستقیم بخوانید. اما در سرورها، به دلیل این چیز کوچک، ممکن است مشکلی ایجاد شود - krakozyabry بیرون خواهد آمد.

پس به هیچ وجه از دفترچه یادداشت معمولی ویندوز استفاده نکنیدبرای ویرایش اسناد سایت خود، اگر نمی خواهید ظاهر کراکوزیابرس داشته باشید. بهترین و ساده ترین گزینه، به نظر من، ویرایشگر Notepad ++ ذکر شده است که عملاً هیچ اشکالی ندارد و چیزی جز مزیت ندارد.

در Notepad ++، هنگام انتخاب یک رمزگذاری، می توانید متن را به رمزگذاری UCS-2 تبدیل کنید، که ذاتاً بسیار نزدیک به استاندارد یونیکد است. همچنین در Notepad امکان رمزگذاری متن در ANSI وجود خواهد داشت. در رابطه با زبان روسی، قبلاً توسط ما در بالای ویندوز 1251 توضیح داده شده است. این اطلاعات از کجا آمده است؟

در رجیستری اتاق عمل شما ثبت شده است. سیستم های ویندوز- در مورد ANSI کدام کد را انتخاب کنید، در مورد OEM کدام را انتخاب کنید (برای زبان روسی CP866 خواهد بود). اگر زبان پیش‌فرض دیگری را روی رایانه خود نصب کنید، این کدگذاری‌ها با زبان‌های مشابهی از دسته ANSI یا OEM برای همان زبان جایگزین می‌شوند.

پس از اینکه سند را در کدگذاری مورد نیاز خود در Notepad ++ ذخیره کردید یا سند را از سایت برای ویرایش باز کردید، می توانید نام آن را در گوشه سمت راست پایین ویرایشگر مشاهده کنید:

برای جلوگیری از krakozyabrov، علاوه بر اقداماتی که در بالا توضیح داده شد، نوشتن اطلاعات مربوط به این رمزگذاری در سربرگ کد منبع همه صفحات سایت مفید خواهد بود تا هیچگونه سردرگمی در سرور یا میزبان محلی ایجاد نشود.

به طور کلی در تمام زبان های نشانه گذاری فرامتن به جز Html از یک اعلان خاص xml استفاده می شود که نشان دهنده کدگذاری متن است.

قبل از شروع به تجزیه کد، مرورگر می داند که از کدام نسخه استفاده می شود و دقیقاً چگونه کدهای کاراکتر این زبان باید تفسیر شوند. اما آنچه قابل توجه است این است که اگر سند را در یونیکد پیش‌فرض ذخیره کنید، می‌توان این اعلان xml را حذف کرد (اگر BOM وجود نداشته باشد کدگذاری UTF-8 یا اگر BOM وجود داشته باشد YUTF-16 در نظر گرفته می‌شود).

در مورد سند زبان Htmlبرای نشان دادن رمزگذاری استفاده شده است عنصر متا، که بین تگ های Head باز و بسته می شود:

... ...

این ورودی کاملاً متفاوت از ورودی است، اما کاملاً مطابق با استاندارد جدید Html 5 است که به صورت حیله‌گرانه معرفی شده است و هر کسی که در آن استفاده می‌شود 100% به درستی درک خواهد شد. این لحظهمرورگرها

در تئوری، یک عنصر متا با نشانی از رمزگذاری سند HTMLقرار دادن بهتر است تا حد امکان در سرفصل سندبه طوری که در زمان ملاقات با اولین کاراکتر متن که از ANSI اصلی نیست (که همیشه به درستی و با هر گونه تغییری خوانده می شود)، مرورگر باید از قبل اطلاعاتی در مورد نحوه تفسیر کدهای این کاراکترها داشته باشد.

موفق باشی! به زودی شما را در صفحات سایت وبلاگ می بینیم

ممکن است علاقه مند باشید

چی آدرس های URLتفاوت بین لینک های مطلق و نسبی برای سایت چیست؟
OpenServer - مدرن سرور محلیو نمونه ای از کاربرد آن برای نصب وردپرسروی کامپیوتر
Chmod چیست، چه مجوزهایی برای اختصاص دادن به فایل ها و پوشه ها (777، 755، 666) و نحوه انجام آن از طریق PHP
جستجوی Yandex در سایت و فروشگاه آنلاین

هنگام تلاش برای پیکربندی یک یا آن عملکرد اینترنت، هر کاربر احتمالاً با مفهومی به عنوان "یونیکد" مواجه شد. برای اینکه بفهمید این مفهوم به چه معناست، بخوانید این مقالهبرای پایان دادن

یونیکد: تعریف

اصطلاح "یونیکد" امروزه به معنای استاندارد رمزگذاری کاراکتر است. این استاندارددر سال 1991 توسط سازمان غیرانتفاعی Unicode Inc پیشنهاد شد. استاندارد یونیکد برای ترکیب تعداد زیادی کاراکتر مختلف در یک سند طراحی شده است. صفحه ای که بر اساس چنین رمزگذاری ایجاد می شود می تواند حاوی هیروگلیف، حروف و نمادهای ریاضی باشد. در این کدگذاری تمامی کاراکترها بدون مشکل نمایش داده می شوند.

«یونیکد»: دلایل ایجاد

مدت ها قبل از ظهور سیستم یونیکد، رمزگذاری ها بر اساس ترجیحات نویسنده سند انتخاب می شدند. اغلب به همین دلیل، برای خواندن یک سند، لازم بود از جداول مختلف استفاده شود. با این حال، این کار باید چندین بار انجام می شد. این امر زندگی را برای کاربران عادی بسیار دشوارتر کرد. همانطور که قبلا ذکر شد، در سال 1991، سازمان غیرانتفاعی Unicode Inc. پیشنهاد استفاده از نوع جدیدی از کدگذاری اطلاعات. این نوعکدگذاری برای ترکیب طیف گسترده ای از استانداردها ایجاد شد. رمزگذاری یونیکد دستیابی به غیرممکن را ممکن کرد: ایجاد ابزاری که از طیف گسترده ای از کاراکترها پشتیبانی می کند. نتیجه به‌دست‌آمده فراتر از انتظارات بود: اسنادی به دست آوردیم که می‌توانستند همزمان متن روسی و انگلیسی و همچنین عبارات ریاضی و لاتین را داشته باشند. قبل از ایجاد سیستم یکپارچهتوسعه دهندگان برنامه نویسی مجبور بودند تعدادی از مشکلات ناشی از وجود تعداد زیادی از استانداردهای موجود را حل کنند. این لحظه... رایج ترین این مشکلات عبارت بودند از مجموعه کاراکترهای محدود، نوشتن الوی، فونت های تکراری و مشکل تبدیل کدهای مختلف.

"یونیکد": گشت و گذار در تاریخ

تصویر زیر را تصور کنید: در حیاط دهه 80، فناوری کامپیوتر هنوز آنقدر فراگیر نشده و شکلی متفاوت با امروز دارد. هر سیستم عامل در نوع خود منحصر به فرد است و توسط علاقه مندان برای نیازهای خاص خاص اصلاح می شود. در نتیجه، نیاز به تبادل اطلاعات منجر به اصلاحات بیشتر شد. هنگام تلاش برای خواندن یک سند ایجاد شده در یک سیستم عامل دیگر، صفحه نمایش معمولا مجموعه کاراکترهای نامفهومی را نشان می دهد. این نیاز به کار بیشتر با رمزگذاری داشت که همیشه نمی‌توانست به سرعت انجام شود. گاهی اوقات چندین ماه طول می کشد تا سند مورد نیاز پردازش شود. کاربرانی که اغلب مجبور به تبادل اطلاعات هستند شروع به ایجاد جداول تبدیل ویژه برای خود کردند. کار با چنین جداول یک ویژگی جالب را نشان داد: ایجاد چنین جداول به طور همزمان در دو جهت ضروری است. ماشین نمی تواند وارونگی معمولی محاسبات را انجام دهد. برای آن، فایل منبع در ستون سمت راست نوشته شده است و نتیجه در سمت چپ است. برعکس، آنها را نمی توان دوباره مرتب کرد. اگر لازم بود از چند کاراکتر خاص در سند استفاده شود، ابتدا باید آنها را اضافه می کرد و سپس باید به کاربر دیگری توضیح می داد که با آنها چه کار باید کرد تا به "کریاکوزیابری" تبدیل نشوند. همچنین باید در نظر داشت که باید فونت های خود را برای هر کدگذاری ایجاد کنید. این امر منجر به ایجاد تعداد زیادی نسخه تکراری در سیستم عامل شد. بنابراین، برای مثال، در یک صفحه، کاربر می تواند ده ها فونت مشابه با Times New Roman استاندارد را ببیند، اما UCS-2، UTF-16، UTF-8، ANSI را مشخص کرده اند. بنابراین، نیاز به توسعه یک استاندارد جهانی وجود دارد.

یونیکد: سازندگان

آغاز تاریخ ایجاد "یونیکد" را می توان به سال 1987 نسبت داد. پس از آن بود که جو بکر از زیراکس، همراه با مارک دیویس و لی کالینز از اپل، شروع به تحقیق در مورد توسعه عملی یک رمزگذاری جهانی کردند. در سال 1988، جو بکر پروژه ای را برای ایجاد یک رمزگذاری چند زبانه بین المللی منتشر کرد. چند ماه بعد، کارگروه توسعه یونیکد گسترش یافت. این شامل کارشناسانی مانند گلن رایت از Sun Microsystems، مایک کرنگان و کن ویستلر از RLG بود. این امکان تکمیل کار بر روی تشکیل اولیه یک استاندارد کدگذاری یکپارچه را فراهم کرد.

یونیکد: توضیحات کلی

رمزگذاری یونیکد بر اساس مفهوم کلیسمبل. این تعریف به عنوان یک پدیده انتزاعی درک می شود که به شکل نوشتار وجود دارد و از طریق گرافم ها اجرا می شود. در یونیکد، هر کاراکتر با یک کد منحصر به فرد مرتبط است که متعلق به یک یا آن بلوک استاندارد است. بنابراین، برای مثال، نمودار "B" در هر دو زبان انگلیسی و روسی وجود دارد، اما با دو نماد متفاوت مطابقت دارد. این کاراکترها را می توان به حروف کوچک نیز تبدیل کرد. این بدان معنی است که هر یک از این نمادها با یک کلید، مجموعه ای از ویژگی ها و یک نام توصیف می شوند.

یونیکد: مزایا

تفاوت آن با سایر سیستم های رمزگذاری مدرن "یونیکد" با وجود تعداد زیادی کاراکتر برای "رمزگذاری" کاراکترهای مختلف است. موضوع این است که رمزگذاری های قبلی فقط 8 بیت داشتند. این بدان معناست که آنها فقط از 28 کاراکتر پشتیبانی می کردند. توسعه جدید دارای 216 شخصیت بود که یک گام بزرگ به جلو بود. بنابراین، رمزگذاری تقریباً تمام الفبای موجود امکان پذیر شد. نیاز به استفاده از جداول تبدیل با ظهور "یونیکد" از بین رفته است. وجود یک استاندارد واحد به سادگی سودمندی آنها را به صفر رساند. در همان زمان، "کریاکوزیابری" نیز ناپدید شد. ظهور یک استاندارد جدید وجود آنها را غیرممکن کرد. نیاز به ایجاد فونت های تکراری نیز حذف شد.

یونیکد: توسعه

علیرغم این واقعیت که پیشرفت هنوز متوقف نشده است، رمزگذاری یونیکد همچنان جایگاه پیشرو در جهان را حفظ می کند. این امر عمدتاً به این دلیل امکان پذیر شد که اجرای آن آسان شد و گسترده شد. با این حال، نباید تصور کرد که همان رمزگذاری یونیکد امروز مانند 25 سال پیش استفاده می شود. امروزه از نسخه 5.x.x استفاده می شود. تعداد کاراکترهای رمزگذاری شده به 231 افزایش یافته است. از زمان شروع تا انتشار نسخه 2.0.0، رمزگذاری یونیکد تقریباً تعداد کاراکترهای موجود در آن را دو برابر کرده است. در سال های بعد، این رشد فرصت ها ادامه یافت. زمانی که نسخه 4.0.0 ظاهر شد، افزایش خود استاندارد ضروری شد. در نتیجه، رمزگذاری یونیکد شکلی را به دست آورد که امروزه آن را می شناسیم.

چه چیز دیگری در یونیکد مفید است؟ علاوه بر تعداد زیاد و دائماً در حال رشد کاراکترها، رمزگذاری یونیکد یک ویژگی نسبتاً مفید دارد. این عادی سازی است. رمزگذاری منابع رایانه را برای بررسی منظم یک کاراکتر، که ممکن است املای مشابهی در الفبای مختلف داشته باشد، هدر نمی دهد. برای این منظور از الگوریتم خاصی استفاده می شود که این امکان را به وجود می آورد که نمادهای مشابه را به صورت جداگانه در یک نمودار رندر کرده و به آنها مراجعه کنید و هر بار تمام اطلاعات را بررسی نکنید. در مجموع چهار الگوریتم از این دست توسعه و پیاده سازی شده است. دگرگونی در هر یک از آنها بر اساس اصل خاصی انجام می شود که با دیگران متفاوت است.

هر کاربر اینترنت که سعی می کند یکی از عملکردهای خود را پیکربندی کند، حداقل یک بار کلمه نوشته شده "یونیکد" را روی صفحه نمایش دید. با خواندن این مقاله متوجه خواهید شد که چیست.

تعریف

رمزگذاری یونیکد یک استاندارد رمزگذاری کاراکتر است. این توسط سازمان غیر انتفاعی Unicode Inc ارائه شده است. در سال 1991 این استاندارد به گونه ای طراحی شده است که تا حد امکان انواع مختلف کاراکترها را در یک سند ترکیب کند. صفحه ای که بر اساس آن ایجاد شده است ممکن است حاوی حروف و هیروگلیف از زبان های مختلف (از روسی تا کره ای) و علائم ریاضی باشد. در این حالت تمام کاراکترهای این کدگذاری بدون مشکل نمایش داده می شوند.

دلایل خلقت

روزی روزگاری، مدتها قبل از ظهور سیستم یکپارچه "یونیکد"، رمزگذاری بر اساس ترجیحات نویسنده سند انتخاب شد. به همین دلیل، اغلب، برای خواندن یک سند، باید از آن استفاده می کرد جداول مختلف... گاهی اوقات این کار باید چندین بار انجام می شد که به طور قابل توجهی زندگی یک کاربر معمولی را پیچیده می کرد. همانطور که قبلا ذکر شد، راه حلی برای این مشکل در سال 1991 توسط سازمان غیرانتفاعی Unicode Inc. پیشنهاد شد که نوع جدیدی از رمزگذاری کاراکتر را پیشنهاد کرد. در نظر گرفته شده بود که استانداردهای منسوخ و متنوع را ترکیب کند. "یونیکد" رمزگذاری است که امکان دستیابی به چیزهای غیرقابل تصور را در آن زمان فراهم می کند: ایجاد ابزاری که از تعداد زیادی کاراکتر پشتیبانی می کند. نتیجه از بسیاری از انتظارات فراتر رفت - اسناد به طور همزمان حاوی متن انگلیسی و روسی، عبارات لاتین و ریاضی ظاهر شدند.

اما ایجاد یک کد نویسی واحد با نیاز به حل تعدادی از مشکلاتی که به دلیل تنوع بسیار زیاد استانداردهایی که قبلاً در آن زمان وجود داشت، پیش آمد. رایج ترین آنها عبارتند از:

  • حروف الف یا "krakozyabry"؛
  • مجموعه شخصیت های محدود؛
  • مشکل تبدیل کدها؛
  • تکراری شدن فونت ها

یک گشت و گذار تاریخی کوچک

تصور کنید که دهه 80 است. فناوری رایانههنوز چندان فراگیر نشده و شکلی متفاوت از امروز دارد. در آن زمان، هر سیستم عامل در نوع خود منحصر به فرد است و توسط هر علاقه مند برای نیازهای خاص اصلاح می شود. نیاز به تبادل اطلاعات به اصلاح بیشتر همه چیز در جهان تبدیل می شود. تلاش برای خواندن سندی که تحت یک سیستم عامل دیگر ایجاد شده است، اغلب مجموعه ای نامفهوم از کاراکترها را روی صفحه نمایش می دهد و بازی ها با کدگذاری شروع می شوند. همیشه نمی توان این کار را به سرعت انجام داد و گاهی اوقات می توان سند لازم را پس از شش ماه یا حتی بعد از آن باز کرد. افرادی که مرتباً اطلاعات را رد و بدل می کنند، جداول تبدیل را برای خود ایجاد می کنند. و اکنون کار روی آنها آشکار می شود جزئیات جالب: آنها باید در دو جهت ایجاد شوند: "از من به شما" و بالعکس. ماشین نمی تواند محاسبات را وارونه کند، زیرا در ستون سمت راست منبع است، و در سمت چپ - نتیجه، اما نه برعکس. اگر نیاز به استفاده از کاراکترهای خاص در سند وجود داشت، ابتدا باید آنها را اضافه می کرد و سپس به شریک توضیح می داد که چه کاری باید انجام دهد تا این کاراکترها به "کراکوزیابری" تبدیل نشوند. و فراموش نکنیم که برای هر کدگذاری، شما باید فونت های خود را توسعه یا پیاده سازی می کردید، که منجر به ایجاد تعداد زیادی تکرار در سیستم عامل شد.

همچنین تصور کنید که در صفحه فونت ها 10 Times New Roman یکسان با حاشیه نویسی کوچک مشاهده کنید: برای UTF-8، UTF-16، ANSI، UCS-2. آیا اکنون درک می کنید که ایجاد یک استاندارد جهانی ضروری بود؟

"پدران خالق"

ریشه یونیکد را می توان به سال 1987 ردیابی کرد، زمانی که جو بکر از زیراکس، همراه با لی کالینز و مارک دیویس از اپل، شروع به تحقیق در مورد ایجاد عملی یک مجموعه شخصیت جهانی کردند. در آگوست 1988، جو بکر پیش نویس پیشنهادی را برای یک سیستم کدگذاری چندزبانه بین المللی 16 بیتی منتشر کرد.

بعد از چند ماه گروه کارییونیکد گسترش یافت و شامل کن ویستلر و مایک کرنگان از RLG، گلن رایت از Sun Microsystems و چندین نفر دیگر شد و کار مقدماتی روی یک استاندارد کدگذاری مشترک را تکمیل کرد.

توضیحات کلی

یونیکد بر اساس مفهوم یک کاراکتر است. این تعریف به عنوان یک پدیده انتزاعی درک می شود که در شکل خاصی از نوشتار وجود دارد و از طریق گرافم ها ("پرتره" آنها) تحقق می یابد. هر کاراکتر در "یونیکد" با یک کد منحصر به فرد متعلق به یک بلوک خاص از استاندارد مشخص می شود. به عنوان مثال، گرافم B در هر دو الفبای انگلیسی و روسی وجود دارد، اما در یونیکد با 2 کاراکتر متفاوت مطابقت دارد. یک تبدیل برای آنها اعمال می شود، یعنی هر یک از آنها با یک کلید پایگاه داده، مجموعه ای از ویژگی ها و یک نام کامل توصیف می شوند.

مزایای یونیکد

رمزگذاری یونیکد با تعداد زیادی از کاراکترها برای «رمزگذاری» کاراکترها با بقیه هم عصرهای خود متفاوت بود. واقعیت این است که نسخه های قبلی آن 8 بیت داشتند، یعنی از 28 کاراکتر پشتیبانی می کردند، اما توسعه جدیدقبلاً 216 شخصیت داشت که یک گام بزرگ به جلو بود. این امکان رمزگذاری تقریباً تمام الفبای موجود و رایج را فراهم کرد.

با ظهور "یونیکد" دیگر نیازی به استفاده از جداول تبدیل نبود: چگونه استاندارد یکنواختاو به سادگی نیاز آنها را نفی کرد. به همین ترتیب، "krakozyabry" در فراموشی فرو رفت - یک استاندارد واحد آنها را غیرممکن کرد، و همچنین نیاز به ایجاد فونت های تکراری را از بین برد.

توسعه یونیکد

البته پیشرفت ثابت نمی ماند و 25 سال از اولین ارائه می گذرد. با این حال، رمزگذاری یونیکد سرسختانه جایگاه خود را در جهان حفظ می کند. از بسیاری جهات، این امر به دلیل این واقعیت امکان پذیر شد که به راحتی اجرا شد و گسترده شد و به عنوان توسعه دهندگان نرم افزارهای اختصاصی (پرداخت) و منبع باز شناخته شد.

در عین حال، نباید تصور کرد که امروز همان رمزگذاری یونیکد مانند ربع قرن پیش در دسترس ما است. در حال حاضر، نسخه آن به 5.х.х تغییر کرده است، و تعداد کاراکترهای رمزگذاری شده به 231 افزایش یافته است. توانایی استفاده از منبع بزرگتری از کاراکترها به منظور حفظ پشتیبانی از Unicode-16 کنار گذاشته شد (کدگذاری هایی که در آن ها حداکثر تعداد کاراکترها به 216 محدود بود). از زمان پیدایش و تا نسخه 2.0.0، «استاندارد یونیکد» تقریباً تعداد کاراکترهای خود را دو برابر کرده است. رشد فرصت ها در سال های بعد ادامه یافت. در نسخه 4.0.0 نیاز به افزایش خود استاندارد وجود داشت که انجام شد. در نتیجه، "یونیکد" به شکلی که امروزه آن را می شناسیم به دست آورد.

چه چیز دیگری در یونیکد وجود دارد؟

علاوه بر تعداد زیاد نمادها که دائماً در حال رشد است، ویژگی مفید دیگری نیز دارد. این به اصطلاح عادی سازی است. به جای پیمایش در کل سند به نویسه و جایگزین کردن نمادهای مناسب از جدول جستجو، یکی از الگوریتم‌های عادی سازی موجود استفاده می‌شود. ما در مورد چه چیزی صحبت می کنیم؟

به جای هدر دادن منابع محاسباتی برای بررسی منظم نمادهای مشابه، که ممکن است در الفبای مختلف مشابه باشند، از یک الگوریتم ویژه استفاده می شود. به شما این امکان را می دهد که به جای بررسی مجدد همه داده ها، کاراکترهای مشابه را در یک ستون جداگانه از جدول جایگزینی بردارید و به آنها مراجعه کنید.

چهار الگوریتم از این دست توسعه و پیاده سازی شده است. در هر یک از آنها، دگرگونی بر اساس یک اصل کاملاً تعریف شده انجام می شود که با سایرین متفاوت است، بنابراین نمی توان یکی از آنها را مؤثرترین آنها نام برد. هر کدام برای نیازهای خاص توسعه یافته، پیاده سازی شده اند و با موفقیت مورد استفاده قرار می گیرند.

توزیع استاندارد

در طول 25 سال تاریخ خود، رمزگذاری یونیکد احتمالاً بیشترین استفاده را در جهان دارد. برنامه ها و صفحات وب نیز بر اساس این استاندارد طراحی شده اند. این واقعیت که امروزه بیش از 60 درصد منابع اینترنتی از یونیکد استفاده می کنند، می تواند نشان دهنده گستردگی کاربرد باشد.

اکنون می دانید که استاندارد یونیکد چه زمانی به وجود آمد. شما همچنین می دانید و می توانید از اهمیت کامل اختراع ساخته شده توسط گروهی از متخصصان شرکت یونیکد قدردانی کنید. بیش از 25 سال پیش

این وب سایت برای اجرای بدون مشکل به جاوا اسکریپت نیاز دارد. لطفا جاوا اسکریپت را در تنظیمات مرورگر خود فعال کنید.

جدول کاراکترهای یونیکد

نشان دادن همه
محدوده: 0000-001F: نویسه‌های کنترلی C0 0020-007F: پایه لاتین 0080-009F: نویسه‌های کنترلی C1 00A0-00FF: نویسه‌های لاتین-1 توسعه‌یافته 0100-017F: گسترش یافته Latin-A 0180-024 Latin-A 0180-024Ex200F : مجموعه کاراکترهای گسترده الفبای آوایی بین‌المللی 02B0-02FF: نویسه‌های توسعه‌یافته غیرقابل ترکیب-اصلاح‌کننده‌ها 0300-036F: نشانه‌های ترکیبی 0370-03FF: الفبای یونانی و قبطی 0400-04FF: نویسه سیریلیک افزودن-050F050F: Cyrillic 050F050F: Cyrillic 050-050F. الفبای ارمنی 0590 -05FF: عبری 0600-06FF: عربی 0700-074F: سریانی 0750-077F: نویسه های عربی اضافی 0780-07BF: Tana (مالدیویی) 07C0-07FF: Nko 0800-0740083F: Nko 0800-083F 08FF: عربی A-Extended Character Set 0900-097F: Devanagari 0980-09FF: Bengali 0A00-0A7F: Gurmukhi 0A80-0AFF: Gujarati 0B00-0B7F: Oriya 0B80-0BFF0-Tagu00 0C80-0CFF: کانادا 0D00-0D7F: مالایالام 0D80-0DFF: سینهالی 0E00-0E7F: تایلندی 0E80-0EFF: لائوس 0F00-0FFF: تبتی 1000-109F: میانمار 1000-109F: میانمار 100-109F: میانمار 10-1000 -137F: خط هجای اتیوپی 1380-139F: نویسه‌های خط اتیوپی اضافی 13A0-13FF: خط چروکی 1400-167F: خط هجای کانادایی 1680-169F: Ogam 16A0-16FF10: Ogam 16A0-16FF17: Ogam 16A0-16FF17: Hanunoo 1740-175F: Buhid 1760-177F: Tagbanwa 1780-17FF: خط خمری 1800-18AF: خط مغول قدیم 18B0-18FF: خط هجایی کانادایی بسط یافته 1900-194F: 1900-194F: 190-194F: لیمبو 1999- خط نوین کاشی های الفبای 19E0-19FF: نویسه های خمری 1A00-1A1F: خط Bugi (lontara) 1A20-1AAF: کاشی های الفبای قدیمی (Tai Tham) 1B00-1B7F: خط بالیایی 1B80-1 BBF: خط سوندانی 1BC0-1BFF: خط باتاک 1C00-1C4F: خط لپچا (رنگ) 1C50-1C7F: خط اول چیکی 1CD0-1CFF: نویسه‌های ودایی 1D00-1D7F: پسوندهای آوایی نشانه های ترکیبی 1E00-1EFF: توسعه یافته لاتین توسعه یافته 1F00-1FFF: مجموعه نویسه های یونانی توسعه یافته 2000-206F: علائم نگارشی 2070-209F: زیرنویس ها و زیرنویس ها 20A0-20CF: نویسه های ارزی 200-20-20-20CF: نمادهای ارزی20-20-20-20CFD مانند نویسه‌های 2150-218F: فرم‌های عددی 2190-21FF: فلش‌های 2200-22FF: عملگرهای ریاضی 2300-23FF: نویسه‌های فنی متفرقه 2400-243F: نمادهای کد کنترل اعداد 2440-260F و 2440-260F 2440-260F : نمادهای طراحی قاب 2580-259F: نمادهای پرکننده 25A0-25FF: اشکال هندسی 2600-26FF: نمادهای متفرقه 27 00-27BF: Dingbats 27C0-27EF: نمادهای ریاضی متفرقه-A 27F0-27FF: پیکان های متفرقه-A 2800-28FF: خط بریل 2900-297F: فلش های متفرقه-B 2980-2980-2980-29 Math: عملگرها 2B00-2BFF: نویسه‌ها و پیکان‌های متفرقه 2C00-2C5F: گلاگولیتیک 1AB0-1AFF: نشانه‌های ترکیبی (پسوند A) 1CC0-1CCF: مجموعه کاراکترهای سوندی توسعه‌یافته A9E0-A9FF: اسکریپت میانماری: اسکریپت میانماری: نویسه بسطی Meaiite مجموعه AB30-AB8F: توسعه یافته لاتین-E AB30-AB6F: Warang-kshiti AB90-ABBF: نوشتن Beria برای Zaghawa 2C60-2C7F: توسعه یافته لاتین-C 2C80-2CFF: الفبای قبطی 2D00-2D2F 2D00-2D2F از نویسه های اضافی گرجی30-bet. 2D7F: Tifinagh 2D80-2DDF: نویسه اتیوپی توسعه یافته 2DE0-2DFF: سیریلیک توسعه یافته-A 2E00-2E7F: علائم اضافینقطه گذاری 2E80-2EFF: KJK اضافی کلید هیروگلیف 2F00-2FDF: Kangxi بخشنامه دیکشنری کلید هیروگلیف 2FF0-2FFF: شخصیت توصیف هیروگلیف 3000-303F: علامت CJK و نقطه گذاری 3040-309F: هیراگانا 30A0-30FF: کاتاکانا 3100-312F: Zhuoin) 3130- 318F: Chamo ترکیب شده با هانگول 3190-319F: نویسه های استفاده شده در Cambun 31A0-31BF: مجموعه کاراکترهای bopomofo توسعه یافته 31C0-31EF: ویژگی های CJK 31F0-31FF: پسوندهای آوایی کاتاکانا 3200-32KPP3200-320-320-32-32-31-3200-32-31-31-3200-32-32-31-3200-30-32-31-31-3200-32-32-30 ماه ها C3200-32FF: علامت‌ها 3400-4DBF: CJK هیروگلیف‌های یکپارچه (برنامه افزودنی A) 4DC0-4DFF: I Ching Hexagrams 4E00-9FFF: CJK هیروگلیف‌های یکپارچه A000-A48F: هجاها و نوشته‌های A490-A4CF و A4CFA4000:A490-A4CF و A4CF4000 A640-A69F: سیریلیک توسعه‌یافته-B A6A0-A6FF: نوشتن باموم A700-A71F: نویسه‌های خم‌شونده A720-A7FF: گسترش‌یافته لاتین D A800-A82F: Siloti Nagri A830-A83F: نویسه‌های عددی هندی A840 Pi8 smo Pagba Lama A880-A8DF: Saurashtra A8E0-A8FF: مجموعه کاراکترهای توسعه یافته Devanagari A900-A92F: Kayah Lee A930-A95F: Rejang A960-A97F: هانگول (پسوند A) A980-A9DF6Aamarse: M980-A9DF6AA00se (پسوند A) AA80-AADF: خط تای ویت AB00-AB2F: مجموعه نویسه‌های خط اتیوپی (پسوند A) ABC0-ABFF: Meitei / Manipuri AC00-D7AF: هجاهای هانگول D800-DB7F: قسمت بالایی جفت‌های جایگزین -DBFF0: بخشی از جفت‌های جایگزین برای استفاده خصوصی DC00-DFFF: قسمت پایینی جفت‌های جانشین E000-F8FF: منطقه برای استفاده خصوصی F900-FAFF: کاراکترهای CJK سازگار FB00-FB4F: نمایش‌های الفبایی FB50-FDCF: حروف عربی-حروف عربی-A نمایش‌ها FFFD: حروف عربی-A FE00-FE0F: انتخابگرهای تایپ FE10-FE1F: اشکال عمودی FE20-FE2F: ترکیبی از نیمه ها FE30-FE4F: الگوهای سازگاری CJK FE50-FE6F: گزینه های اندازه کوچک FE70-FE FF: حروف عربی-B FF00-FFEF: شکل های نیمه عرض و تمام عرض FFF0-FFFF: نویسه های خاص

  • یونیکد چیست؟

    یونیکد(انگلیسی یونیکد) یک استاندارد جهانی کدنویسی کاراکتر است که امکان ارائه کاراکترها را برای همه زبان های دنیا فراهم می کند.

    برخلاف ASCII، یک کاراکتر در دو بایت کدگذاری می شود که استفاده از آن را ممکن می کند 65 536 شخصیت ها علیه 256 .

    همانطور که می دانید، یک بایت یک عدد صحیح از است خراشقبل از 255 ... به نوبه خود، یک بایت از هشتبیت ها، که مقادیر عددی را به صورت باینری ذخیره می کنند، جایی که هر واحد بعدی بیت فعلی دو برابر مقدار بیت قبلی است. بنابراین، دو بایت می تواند یک عدد از را ذخیره کند خراشقبل از 65 535 ، که به ما امکان استفاده از آن را می دهد 65 536 کاراکترها (صفر + 65 535 ، صفر هم یک عدد است، چیزی نیست).

    کاراکترهای یونیکد به بخش هایی تقسیم می شوند. اولین 128 شخصیت ها جدول را تکرار می کنند ASCII.

    خانواده ای از رمزگذاری ها وظیفه نمایش کاراکترها را بر عهده دارند. یونیکد (فرمت تبدیل یونیکد - UTF). معروف ترین و پرکاربردترین کدگذاری است UTF-8.

  • چگونه از جدول استفاده کنیم؟

    نمادها 16 قطعه در هر خط ارائه می شوند. از بالا می توانید ببینید عدد هگزادسیمالاز جانب 0 قبل از 16 ... در سمت چپ، اعداد مشابه به شکل هگزادسیمال 0 قبل از Fff.
    با اتصال عدد سمت چپ به عدد بالا می توانید از کد کاراکتر مطلع شوید. به عنوان مثال: حرف انگلیسی افواقع در خط 004 ، در ستون 6 : 004 + 6 = کد کاراکتر 0046 .

    با این حال، شما به سادگی می توانید ماوس را روی آن نگه دارید شخصیت خاصبرای مشاهده کد کاراکتر به جدول مراجعه کنید. یا روی نماد کلیک کنید تا آن را کپی کنید یا کد آن را در یکی از قالب ها.

    در قسمت جستجو می توانید کلمات کلیدی جستجو را وارد کنید، به عنوان مثال: فلش، خورشید، قلب. یا می توانید کد کاراکتر را در هر قالبی مشخص کنید، به عنوان مثال: 1123، 04BC، چ. یا خود نماد اگر می خواهید کد نماد را بدانید.

    جستجو بر اساس کلید واژه هادر حال حاضر در حال توسعه است، بنابراین ممکن است نتیجه ای نداشته باشد. اما بسیاری از نمادهای محبوب را می توان در حال حاضر یافت.

باور کنید یا نه، یک فرمت تصویر در مرورگر تعبیه شده است. این فرمت به شما این امکان را می دهد که تصاویر را قبل از نیاز بارگذاری کنید، رندر تصویر را در حالت عادی و یا صفحه نمایش شبکیه چشمو به شما اجازه می دهد که CSS را به تصاویر اضافه کنید. خوب، این کاملا درست نیست. این یک نسبت تصویر نیست، اگرچه همه چیز ثابت باقی می ماند. با استفاده از آن، می‌توانید آیکون‌های مستقل از وضوح ایجاد کنید که بارگذاری آن زمان نمی‌برد و با آن استایل‌سازی می‌شوند با استفاده از CSS.

یونیکد چیست؟

یونیکد توانایی نمایش صحیح حروف و علائم نگارشی از زبان های مختلف در یک صفحه است. این فوق العاده مفید است: کاربران می توانند با سایت شما در سراسر جهان تعامل داشته باشند و آنچه را که می خواهید نشان می دهد - می تواند فرانسوی با لهجه یا کانجی باشد.

یونیکد به تکامل خود ادامه می دهد: اکنون نسخه 8.0 با بیش از 120 هزار کاراکتر مرتبط است (در مقاله اصلی که در اوایل سال 2014 منتشر شد، نسخه 6.3 و 110 هزار کاراکتر بود).

علاوه بر حروف و اعداد، نمادها و نمادهای دیگری نیز در یونیکد وجود دارد. V آخرین نسخه هااین شامل ایموجی هایی است که می توانید در پیام رسان iOS مشاهده کنید.

صفحات HTML از دنباله ای از کاراکترهای یونیکد ایجاد می شوند و هنگام ارسال از طریق شبکه به بایت تبدیل می شوند. هر حرف و هر کاراکتر هر زبانی کد منحصر به فرد خود را دارد و زمانی که فایل ذخیره می شود کدگذاری می شود.

هنگام استفاده از سیستم رمزگذاری UTF-8، می توانید مستقیماً کاراکترهای یونیکد را در متن وارد کنید، اما همچنین می توانید با تعیین یک پیوند نمادین دیجیتال آنها را به متن اضافه کنید. به عنوان مثال، این یک نماد قلب است و شما می توانید آن نماد را به سادگی با افزودن کد به نشانه گذاری نمایش دهید.

این مرجع عددی را می توان در قالب اعشاری یا هگزادسیمال مشخص کرد. فرمت اعشاری نیاز به اضافه کردن حرف x در ابتدا دارد، نماد همان قلب () گزینه قبلی را نشان می دهد. (2665 نسخه هگزادسیمال 9829 است).

اگر با استفاده از CSS یک کاراکتر یونیکد اضافه می کنید، فقط می توانید از مقادیر هگز استفاده کنید.

برخی از پرکاربردترین کاراکترهای یونیکد به جای کدهای عددی، نام متن یا اختصارات به یاد ماندنی تری دارند، مانند علامت (& - &). چنین نمادهایی نامیده می شوند یادگاری در HTML، فهرست کاملی در ویکی پدیا موجود است.

چرا باید از یونیکد استفاده کنید؟

سوال خوبی است، در اینجا چند دلیل وجود دارد:

  1. برای استفاده از کاراکترهای صحیح از زبان های مختلف.
  2. برای جایگزینی آیکون ها
  3. برای جایگزینی نمادهای متصل شده از طریق font-face @.
  4. برای تعریف کلاس های CSS

شخصیت های معتبر

دلیل اول نیازی به اقدام اضافی ندارد. اگر HTML در قالب UTF-8 ذخیره شود و رمزگذاری آن به عنوان UTF-8 از طریق شبکه منتقل شود، همه چیز باید همانطور که باید کار کند.

باید. متأسفانه، همه مرورگرها و دستگاه‌ها همه کاراکترهای یونیکد را یکسان پشتیبانی نمی‌کنند (به طور دقیق‌تر، همه فونت‌ها از مجموعه کامل کاراکترها پشتیبانی نمی‌کنند). به عنوان مثال، کاراکترهای ایموجی اخیراً اضافه شده در همه جا پشتیبانی نمی شوند.

برای پشتیبانی از UTF-8 در HTML5 اضافه کنید (اگر به تنظیمات سرور دسترسی ندارید، باید اضافه کنید ). نوع قدیمی از ( ).

نمادها

دلیل دوم استفاده از یونیکد حضور است تعداد زیادینمادهای مفیدی که می توان از آنها به عنوان نماد استفاده کرد. به عنوان مثال، ≡ و.

مزیت آشکار آنها این است که شما به هیچ کدام نیاز ندارید فایل های اضافیبرای اضافه کردن آنها به صفحه، به این معنی که سایت شما سریعتر خواهد بود. همچنین می توانید رنگ آنها را تغییر دهید یا با استفاده از CSS یک سایه اضافه کنید. و با افزودن ترانزیشن ها (transition css) می توانید به آرامی رنگ آیکون را هنگامی که ماوس را بر روی آن قرار می دهید بدون هیچ تصویر اضافی تغییر دهید.

فرض کنید می‌خواهم یک نشانگر رتبه‌بندی ستاره در صفحه‌ام قرار دهم. من می توانم این کار را انجام دهم:

★ ★ ★ ☆ ☆

شما نتیجه زیر را دریافت می کنید:

اما اگر بدشانس باشید، چیزی شبیه به این را خواهید دید:

امتیاز مشابه در BlackBerry 9000

این اتفاق می افتد اگر کاراکترهای استفاده شده در فونت مرورگر یا دستگاه نباشند (خوشبختانه، این ستاره ها کاملاً پشتیبانی می شوند و قدیمی هستند. گوشی های بلک بریدر اینجا تنها استثنا هستند).

اگر کاراکتر یونیکد وجود نداشته باشد، در جای خود می‌تواند کاراکترهای مختلفی از مربع خالی (□) تا الماس با علامت سوال (�) وجود داشته باشد.

چگونه یک کاراکتر یونیکد را پیدا می کنید که ممکن است برای طراحی شما کار کند؟ شما می توانید آن را در سایتی مانند Unicodinator با نگاه کردن به کاراکترهای موجود جستجو کنید، اما وجود دارد بهترین راه... - این سایت عالی به شما امکان می دهد نماد مورد نظر خود را ترسیم کنید و سپس لیستی از کاراکترهای مشابه یونیکد را به شما ارائه می دهد.

استفاده از یونیکد با نمادهای font-face @

اگر از نمادهایی استفاده می کنید که با فونت خارجی از طریق @ font-face متصل می شوند، کاراکترهای یونیکد را می توان به عنوان جایگزین استفاده کرد. به این ترتیب می‌توانید یک کاراکتر یونیکد مشابه را در دستگاه‌ها یا مرورگرهایی که @ font-face پشتیبانی نمی‌شود نمایش دهید:

در سمت چپ نمادهای Font Awesome در کروم و در سمت راست جایگزین‌های Unicode آنها در Opera Mini هستند.

بسیاری از ابزارهای تطبیق فونت و صورت @ از طیفی از کاراکترهای یونیکد از ناحیه استفاده خصوصی استفاده می کنند. مشکل این روش این است که اگر @ font-face پشتیبانی نشود، کدهای کاراکتر بدون هیچ معنایی به کاربر ارسال می شود.

برای ایجاد مجموعه‌های آیکون در font-face@ عالی است و به شما امکان می‌دهد یک کاراکتر یونیکد مناسب را به عنوان پایه نماد انتخاب کنید.

اما هشدار دهید - برخی از مرورگرها و دستگاه‌ها وقتی با font-face @ استفاده می‌شوند، نویسه‌های یونیکد را دوست ندارند. منطقی است که پشتیبانی از کاراکترهای یونیکد را با Unify آزمایش کنید - این برنامه به شما کمک می کند تعیین کنید که استفاده از یک کاراکتر در مجموعه نمادهای font-face@ چقدر ایمن است.

پشتیبانی از کاراکترهای یونیکد

مشکل اصلی استفاده از نویسه‌های یونیکد به‌عنوان بک گراند، پشتیبانی ضعیف در صفحه‌خوان‌ها است (باز هم، برخی اطلاعات در این مورد را می‌توانید در Unify پیدا کنید)، بنابراین مهم است که کاراکترهایی را که استفاده می‌کنید با دقت انتخاب کنید.

اگر نماد شما فقط یک عنصر تزئینی در کنار برچسب متنی است که توسط صفحه‌خوان قابل خواندن است، نیازی نیست زیاد نگران باشید. اما اگر نماد به تنهایی است، ارزش افزودن یک برچسب متنی مخفی را دارد تا به کاربران صفحه‌خوان کمک کند. حتی اگر یک کاراکتر یونیکد توسط یک صفحه خوان خوانده شود، این احتمال وجود دارد که با هدف مورد نظر خود بسیار متفاوت باشد. به عنوان مثال، ≡ (≡) به عنوان نماد همبرگر توسط VoiceOver در iOS به عنوان "یکسان" خوانده می شود.

یونیکد در نام کلاس های CSS

این واقعیت که یونیکد را می توان در نام کلاس ها و در شیوه نامه ها استفاده کرد از سال 2007 شناخته شده است. در آن زمان بود که جاناتان اسنوک در مورد استفاده از کاراکترهای یونیکد در کلاس های کمکی هنگام تایپ گوشه های گرد نوشت. این ایده توزیع زیادی دریافت نکرده است، اما ارزش آن را دارد که در مورد امکان استفاده از Unicode در نام کلاس ها (کاراکترهای خاص یا سیریلیک) بدانید.

انتخاب فونت

تعداد کمی از فونت‌ها از مجموعه کامل کاراکترهای یونیکد پشتیبانی می‌کنند، بنابراین هنگام انتخاب فونت، حتماً کاراکترهایی را که می‌خواهید بررسی کنید.

تعداد زیادی آیکون در Segoe UI Symbol یا Arial Unicode MS. این فونت ها بر روی کامپیوتر و مک در دسترس هستند. Lucida Grande همچنین دارای تعداد زیادی کاراکتر یونیکد است. برای اطمینان از اینکه حداکثر تعداد کاراکترهای یونیکد در دسترس کاربرانی است که این فونت ها را نصب کرده اند، می توانید این فونت ها را به اعلامیه خانواده فونت اضافه کنید.

تعیین پشتیبانی یونیکد

بسیار عالی است که بتوانیم وجود یک کاراکتر یونیکد خاص را بررسی کنیم، اما هیچ راه تضمینی برای انجام این کار وجود ندارد.

کاراکترهای یونیکد با پشتیبانی می توانند موثر باشند. به عنوان مثال، یک ایموجی در خط موضوع آن را از بقیه متمایز می کند صندوق پستی.

نتیجه

این مقاله فقط اصول یونیکد را پوشش می دهد. امیدوارم برای کمک به درک بهتر یونیکد و استفاده موثر از آن مفید واقع شوید.

لیست پیوندها

  • (مولد آیکون‌ست فونت-فیس @ مبتنی بر یونیکد)
  • Shape Catcher (ابزار تشخیص کاراکتر یونیکد)
  • Unicodinator (جدول کاراکتر یونیکد)
  • Unify (پشتیبانی از کاراکترهای یونیکد را در مرورگرها بررسی کنید)
  • Unitools (مجموعه ای از ابزارهای کار با یونیکد)