یک فایل متنی را به UTF-۸ تبدیل کنید
وقتی فایل نشانهٔ ترتیب بایت یونیکد دارد، تشخیص خودکار منبع را انتخاب کنید، یا وقتی میدانید نشانه ندارد، UTF-۱۶LE یا UTF-۱۶BE را خودتان انتخاب کنید. نتیجه را بهصورت UTF-۸ بنویسید و برای یک فایل متنی مدرن BOM را خاموش بگذارید، مگر اینکه برنامهٔ دریافتکننده بهطور خاص به آن نیاز داشته باشد.
یک فایل متنی ساده تا ۲۵ مگابایت. قالبهای باینری مانند اسناد Word کدگذاری متنی نیستند و رد میشوند.
نتیجهها بدون تضمین درستی ارائه میشوند. روش و منابع در پایین صفحه منتشر شدهاند تا بتوانید محاسبه را بررسی کنید.
حالت خودکار نشانههای ترتیب بایت UTF-۸، UTF-۱۶LE و UTF-۱۶BE را تشخیص میدهد. فایل بدون نشانه بهطور پیشفرض UTF-۸ است.
توالی بایتهای نامعتبر رد میشوند، نه اینکه بیسروصدا با نویسههای جایگزین عوض شوند.
تبدیل پایان خط اختیاری و مستقل از کدگذاری نویسههاست.
چگونگی کار
مراحل انجام کار
- سه بایت اول را برای EF BB BF (UTF-۸)، FF FE (UTF-۱۶LE) یا FE FF (UTF-۱۶BE) بررسی کنید. در حالت خودکار، نشانه رمزگشا را انتخاب میکند؛ بدون نشانه، بهجای حدس زدن یک صفحهکد قدیمی، UTF-۸ را الزامی کنید.
- وقتی کدگذاری منبع دستی انتخاب شده، هر نشانهٔ موجود باید با آن سازگار باشد. نشانهٔ سازگار را بردارید، سپس در حالت سختگیر (fatal) رمزگشایی کنید تا یک توالی بایت نامجاز تبدیل را متوقف کند، نه اینکه بیسروصدا به نویسهٔ جایگزین تبدیل شود.
- هر توالی CR، LF و CRLF را بهطور پیشفرض حفظ کنید. فقط در صورت انتخاب، هر سه شکل را بهعنوان عملیاتی جدا از کدگذاری نویسهها به LF یا به CRLF یکسانسازی کنید.
- نقاط کد یونیکد را بشمارید و یک جفت جانشین (surrogate) معتبر UTF-۱۶ را یک نویسهٔ تکمیلی به حساب آورید. رشتهٔ حاصل را بهصورت بایتهای UTF-۸ یا واحدهای کد دوبایتی UTF-۱۶ با ترتیب بایت انتخابشده کدگذاری کنید.
- نشانهٔ مقصد انتخابشده — EF BB BF، FF FE یا FE FF — را فقط در صورت درخواست اضافه کنید، سپس یک فایل .txt جداگانه ارائه دهید. فایل منبع هرگز تغییر نمیکند.
فرضها
- حالت خودکار عمداً به سه نشانهٔ ترتیب بایت یونیکد محدود است. فایل بدون نشانه بهطور پیشفرض UTF-۸ سختگیرانه در نظر گرفته میشود؛ Windows-۱۲۵۲، گونههای ISO-۸۸۵۹ و دیگر صفحهکدهای قدیمی را نمیتوان تنها از روی بایتها بهطور قابلاعتماد تشخیص داد.
- نشانهٔ ترتیب بایت در ابتدای فایل فراداده است و پیش از اولین نویسهٔ متن مصرف میشود. یک U+FEFF در ادامهٔ فایل محتواست و محتوا میماند.
- UTF-۸ مسئلهٔ ترتیب بایت ندارد؛ BOM آن فقط یک امضاست. UTF-۱۶LE و UTF-۱۶BE همان واحدهای کد ۱۶ بیتی را با ترتیب بایت مخالف سریالسازی میکنند.
- توالیهای نامعتبر UTF بهجای تعمیر رد میشوند. سقف ورودی ۲۵ مگابایت است و حلقههای شمارش نقاط کد و UTF-۱۶ هر ۲۵۰٬۰۰۰ واحد کد برای گزارش پیشرفت و امکان لغو، کنترل را واگذار میکنند.
پرسشهای رایج
آیا این ابزار میتواند Windows-۱۲۵۲ یا صفحهکد قدیمی دیگری را حدس بزند؟
خیر. بسیاری از کدگذاریهای قدیمی هیچ امضای قابلاعتمادی ندارند، بنابراین حدس زدن میتواند متن را بیسروصدا تغییر دهد. این مبدل سه کدگذاری صریح یونیکد را پشتیبانی میکند و از شما میخواهد ابتدا از یک رمزگشای قدیمی شناختهشده استفاده کنید.
آیا فایل UTF-۸ باید BOM داشته باشد؟
برای وب مدرن و گردشکارهای خط فرمان معمولاً نه. برخی نرمافزارهای قدیمی ویندوز از آن بهعنوان یک سرنخ استفاده میکنند، بنابراین این انتخاب بهجای افزوده شدن خودکار، صریح باقی میماند.
منابع
روش کامل، مثال محاسبهشده و همهٔ فرضهای این نتیجه در این صفحه آمده است: مبدل کدگذاری متن.