BOM UTF-۸ را از یک فایل متنی حذف کنید
فایل را با تشخیص خودکار بخوانید، آن را بهصورت UTF-۸ بنویسید و نشانهٔ ترتیب بایت را خاموش بگذارید. نشانهٔ آغازین EF BB BF هنگام رمزگشایی مصرف میشود و در فایل جدید نوشته نمیشود. خود متن و، بهطور پیشفرض، پایان هر خط بدون تغییر میماند.
یک فایل متنی ساده تا ۲۵ مگابایت. قالبهای باینری مانند اسناد Word کدگذاری متنی نیستند و رد میشوند.
نتیجهها بدون تضمین درستی ارائه میشوند. روش و منابع در پایین صفحه منتشر شدهاند تا بتوانید محاسبه را بررسی کنید.
BOM UTF-۸ سه بایت — EF BB BF — در ابتدای فایل است.
حذف آن نشانهٔ کدگذاری را تغییر میدهد، نه اولین نویسهٔ قابلمشاهده را.
تبدیل بهطور کامل در مرورگر انجام میشود و یک فایل جداگانه تولید میکند.
چگونگی کار
مراحل انجام کار
- سه بایت اول را برای 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-۱۶ هر ۲۵۰٬۰۰۰ واحد کد برای گزارش پیشرفت و امکان لغو، کنترل را واگذار میکنند.
پرسشهای رایج
چرا BOM ممکن است بهصورت نویسههای عجیب ظاهر شود؟
نرمافزاری که بایتها را به اشتباه با یک کدگذاری قدیمی رمزگشایی میکند، ممکن است EF BB BF را بهصورت متن قابلمشاهده نشان دهد. یک رمزگشای آگاه از یونیکد این نشانه را پیش از نمایش اولین نویسه مصرف میکند.
آیا حذف BOM پایان خطوط CRLF را تغییر میدهد؟
با گزینهٔ «دقیقاً حفظ شود» خیر. مدیریت BOM و تبدیل پایان خط دو کنترل جداگانه هستند.
منابع
روش کامل، مثال محاسبهشده و همهٔ فرضهای این نتیجه در این صفحه آمده است: مبدل کدگذاری متن.