نحوه استفاده
- برای کدگذاری، «متن به بایت» و برای رمزگشایی، «بایت به متن» را انتخاب کنید.
- یک قالب بایت انتخاب کنید: باینری، هگزادسیمال، دهدهی یا اکتال.
- ورودی خود را تایپ یا جایگذاری کنید. نتیجه و تعداد بایتها همزمان با تایپ بهروز میشوند.
- نتیجه را کپی کنید یا برای بررسی رفتوبرگشت، آن را به ورودی منتقل کنید.
نحوه کار
رایانهها متن را بهصورت بایت ذخیره میکنند. این ابزار از UTF-8 استفاده میکند؛ کدگذاریای که تقریباً همه وبسایتها و سیستمهای مدرن به کار میبرند. در UTF-8، هر یک از 128 نویسه ASCII (حروف انگلیسی، ارقام و نشانههای سجاوندی پایه) یک بایت میگیرد؛ بنابراین H در باینری 01001000 و در هگزادسیمال 48 است. همه نویسههای دیگر دو تا چهار بایت میگیرند: é دو بایت است (C3 A9)، € و ☕ سه بایتاند و بیشتر ایموجیها چهار بایت. به همین دلیل تعداد بایتها میتواند از تعداد نویسهها بیشتر شود و یک نویسه میتواند به چند گروه 8 بیتی تبدیل شود.
هر بایت را میتوان به چهار روش رایج نوشت: باینری 8 رقمی (00000000–11111111)، هگزادسیمال 2 رقمی (00–FF)، دهدهی (0–255) یا اکتال 3 رقمی (000–377). وقتی بایتها بدون جداکننده نوشته میشوند، مقدارهای باینری، هگز و اکتال تا عرض ثابت با صفر پر میشوند و مقدارهای دهدهی تا 3 رقم پر میشوند تا دوباره بدون ابهام قابل تفکیک باشند.
رمزگشایی با قالببندی انعطافپذیر است: فاصلهها، شکست خط، ویرگول و نقطهویرگول بین بایتها نادیده گرفته میشوند؛ همچنین پیشوندهای 0x و 0b و دنبالههای \x نادیده گرفته میشوند. هر گروه بررسی میشود؛ هر رقمی که در قالب انتخابی مجاز نباشد یا مقداری بالاتر از 255 باشد، همراه با موقعیت بایت گزارش میشود. پس از رمزگشایی، بایتها از نظر UTF-8 معتبر بررسی میشوند و اگر متن نباشند به شما اعلام میشود.
نویسههایی که از چند کدپوینت ساخته میشوند، مانند پرچمها یا ایموجیهای دارای رنگ پوست، اینجا چند نویسه محسوب میشوند؛ چون هر کدپوینت جداگانه کدگذاری میشود.
نمونهها
«Hi» کلاسیک در باینری
H معادل ASCII 72 و i معادل 105 است؛ بنابراین «Hi» در باینری 01001000 01101001، در هگز 48 69 و در دهدهی 72 105 میشود: 2 نویسه، 2 بایت، 16 بیت.
چرا «Café» 5 بایت است
C، a و f هر کدام یک بایت هستند، اما é در UTF-8 دو بایت است: 11000011 10101001 (C3 A9). این واژه 4 نویسه دارد اما 5 بایت میگیرد؛ نکتهای که برای محدودیت ستونهای پایگاهداده و فیلدهای پروتکل که بر حسب بایت اندازهگیری میشوند اهمیت دارد.
خواندن یک دامپ هگز
یک دیباگر این مقدار را نشان میدهد: 48 65 6c 6c 6f 2c 20 e4 b8 96 e7 95 8c. آن را با «بایتها ← متن» و حالت هگزادسیمال جایگذاری کنید تا «Hello, 世界» را ببینید؛ هر نویسه چینی 3 بایت است.
پرسشهای متداول
چرا یک نویسه به 16، 24 یا 32 بیت تبدیل میشود؟
در UTF-8 فقط نویسههای ASCII در یک بایت (8 بیت) جا میگیرند. حروف دارای اکسنت و بیشتر الفباهای دیگر 2 بایت میگیرند؛ چینی، ژاپنی، کرهای و بسیاری از نمادها 3 بایت و ایموجیها 4 بایت. هر بایت بهصورت گروه جداگانه نمایش داده میشود.
آیا این ASCII است یا UTF-8؟
UTF-8. برای متن انگلیسی ساده نتیجه با ASCII یکسان است، چون UTF-8 طوری طراحی شده که با آن سازگار باشد. نویسههای فراتر از ASCII بهتنهایی در ASCII قابل نمایش نیستند.
چرا هنگام رمزگشایی باینری خطا میگیرم؟
هر بایت باید حداکثر ۸ رقم دودویی داشته باشد و فقط شامل ۰ و ۱ باشد. بدون فاصله، تعداد کل ارقام باید مضربی از ۸ باشد. پیام خطا بایتی را که خوانده نشده است مشخص میکند.
«UTF-8 نامعتبر» یعنی چه؟
بایتها دنبالههای معتبر UTF-8 تشکیل نمیدهند؛ مثلاً یک بایت تنها با مقدار بالاتر از ۱۲۷ یا دنبالهای که از وسط قطع شده باشد. ممکن است دادهها از فایلی با کدگذاری دیگری مانند Windows-1252 آمده باشند، یا ممکن است اصلاً متن نباشند.
حریم خصوصی
تبدیل در مرورگر شما و با استفاده از رمزگذار و رمزگشای داخلی UTF-8 انجام میشود. متن شما بارگذاری، ذخیره یا در تحلیلهای آماری گنجانده نمیشود.