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

داده و اتصال فنی

نویسهٔ نامرئیِ متن کجاست؟ محل و کدِ Unicode را بدون حذف ببینیم

بازرسِ محلی،هشت رخدادِ منتخب را با موقعیتِcodepoint،UTF-8وUTF-16پیدا می‌کند؛نام و نسخهٔUnicodeثبت و اصلِ متن بدون تغییر حفظ می‌شود.

برای پیداکردنِ نویسهٔ نامرئی،فقط شمارِ کاراکتر کافی نیست؛باید محلِ همان رخداد و کدِUnicodeآن را ببینیم. ابزارِ محلیِ این صفحه یک فهرستِ منتخب از نویسه‌های فاصله،اتصال و جهت را پیدا می‌کند و موقعیتِcodepoint،بایتِUTF-8وواحدِUTF-16را جدا گزارش می‌دهد. متن را پاک یا نرمال نمی‌کند و هر نویسهٔ پیدا‌شده را خطا نمی‌نامد.

نامرئی،همیشه بی‌معنی یا صفرعرض نیست

نیم‌فاصلهٔU+200Cمی‌تواند برای نگارشِ فارسی لازم باشد؛NBSPیاU+00A0یک فاصلهٔ نشکن است و با فضایِ بدونِ عرض یکی نیست. نویسه‌های جهت هم ممکن است در متنِ دوطرفه کاربردِ عمدی داشته باشند. مستندِUnicodeمیانِ فاصلهٔ نمایانِ خالی و نویسه‌های default-ignorableدر نمایشِ پشتیبانی‌نشده فرق می‌گذارد؛ظاهر را به حکمِ حذف تبدیل نمی‌کنیم.

این بازرس دقیقاً۲۰codepointِ اعلامی را می‌شناسد؛فهرستِ جامعِ همهٔ نویسه‌های نامرئی،WhitespaceیاDefault_Ignorableنیست. نام،categoryوbidi classاز پایگاهِUnicodeِ runtimeخوانده می‌شود. گرفتنِ bidi classبه معنیِ اجرایِ الگوریتمِ کاملِ جهت‌گذاری یا تشخیصِ جعل و تهدید نیست.

نمونهٔ اصیل چه چیزهایی دارد؟

رشتهٔ تمرین با یک ایموجی و «ا»ی دارای علامتِ ترکیبی آغاز می‌شود؛سپس واژهٔ «می‌رویم» با نیم‌فاصله،فاصلهٔ نشکن،ZWSP،یک جفتِ منتخبِ کنترلِ جهت،LRM،variation selectorِایموجی وWORD JOINERدارد. این‌ها از متنِ مشتری استخراج نشده‌اند؛نویسنده رشته را برای دیده‌شدنِ اختلافِ واحدها ساخته است.

خروجی هشت رخدادِ منتخب را به‌ترتیب گزارش می‌کند:U+200C،U+00A0،U+200B،U+2067،U+2069،U+200E،U+FE0FوU+2060. تعدادِ هشت،تعدادِ همهٔ فاصله‌ها یا همهٔ کاراکترهای نامرئیِ ممکن نیست. فایلِ نتیجه خودِ کنترل‌ها را با notationِescapeنمایش می‌دهد تا گزارش،جهتِ متنِ خواننده را بی‌اعلان عوض نکند.

موقعیت را با واحد و مبنای صفر بخوانیم

همهٔ موقعیت‌ها در این قرارداد از صفر شروع می‌شوند. برای اولین نیم‌فاصله،اندیسِcodepointبرابر۵و شروعِUTF-16برابر۶است؛ایموجیِ قبل از آن درUTF-16دو واحد دارد. بایتِUTF-8هم جدا از طولِ پیشوندِ واقعی حساب می‌شود. علامتِ ترکیبیِ ابتدای نمونه یکcodepointِجداست و از شمار حذف نشده است.

خانهٔ گزارشکاربردچیزی که نمی‌گوید
codepoint indexموقعیت در رشتهٔPythonستونِ دیداریِ روی صفحه نیست
UTF-8 byte startمرزِ بایت درencodeِدقیقاندیسِحرف نیست
UTF-16 unit startقراردادِ واحدِرشته درمحیطِمتناسبتعدادِgraphemeنیست
name/category/bidiویژگیِ همانcodepointنیتِ نویسنده یا معنیِ جمله نیست

دو رخدادِ یک کد را گم نکنیم

در آزمونِ جدا،دو نیم‌فاصله در اندیس‌های۱و۳وجود دارند و هر دو ثبت می‌شوند. یک setاز کدها فقط می‌گوید U+200Cوجود دارد؛محلِ دوم را از دست می‌دهد. این بازرس برای هر رخداد ردیف می‌سازد و هشِUTF-8ِکلِ ورودی را نگه می‌دارد تا نسخهٔ متن معلوم بماند.

متنِ خالی و نمونهٔ دارای فاصلهٔ معمولی وnewlineهم آزموده شده‌اند؛هیچ تطبیقی با فهرستِ منتخب نمی‌دهند. این به معنیِ «متن هیچ نویسهٔ فاصله‌ای ندارد» نیست. فهرستِ محدودِ ابزار را باید همراهِ نتیجه خواند. ورودی نیز رشتهٔUnicodeبا سقفِ محلیِ۴۰۹۶codepointاست؛surrogateِنامعتبرِUTF-8پذیرفته نمی‌شود.

اصلِ متن تغییر نمی‌کند

بایتِ متن پیش و پس از بازرسی برابر است. گزارش،نسخهٔPython۳٫۱۲٫۱۴وUCD۱۵٫۰٫۰را ثبت می‌کند. از صفحهٔ جدیدِUnicodeبرای معرفیِ مفهوم استفاده شده،اما runtimeرا نسخهٔ۱۸یا آزمونِ کاملِ انطباق نمی‌نامیم. نامِ ویژگی باید با نسخهٔ دادهٔ همان اجرا تفسیر شود.

اگر نویسه‌ای غیرمنتظره پیدا شد،ابتدا هدفِ متن و مسیرِ تولیدش را بررسی کنید. حذفِ خودکارِ همهٔکنترل‌ها ممکن است شکلِ فارسی یا نمایشِ شناسهٔ لاتین را خراب کند. همچنین برابریِ ظاهریِ دو متن،مالکیتِ یک شناسه یا یکسان‌بودنِ معنایِ آن‌ها را ثابت نمی‌کند؛این بازرس آن تصمیم‌ها را انجام نمی‌دهد.

از تشخیصِ محل تا بررسیِ مسیر

شمارندهٔ طولِ فارسی عددِcodepointوUTF-8وواحدهای دیگر را می‌دهد؛این صفحه رخدادِ منتخب را با محل و نام پیدا می‌کند. اگر هدف مقایسهٔ تبدیل‌هاست،در NFCوNFKCپیش و پسِ تبدیل را جدا ببینید؛بازرسِ حاضر تبدیل انجام نمی‌دهد.

برای بررسیِ متنِ ورودی یا خروجی در چتِ اپرا،نمونهٔ مجاز و انتظارِ حفظِ متن را مطرح کنید. فایل فقط حافظهٔ محلی را می‌بیند و شبکه،اصلاحِ سند یا APIندارد؛وجودِ چنین بازرس یا سیاستِ حذف در محصول از این تمرین نتیجه نمی‌شود.

فایل تمرین و منبع

کدِ کاملِ محلیِ تمرین و کنترل‌هایش · دادهٔ اصیل و نتیجهٔ اجرای واقعی؛ نویسه‌های کنترلی escape شده‌اند

منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثال‌ها و فایل‌های این راهنما آموزشی و ساختهٔ تحریریه‌اند.

برای این نیاز، کدام خدمت مناسب‌تر است؟

تماس و منشی، چت سایت و تحلیل مکالمه سه مسیر متفاوت‌اند. ابتدا خدمت متناسب نیازتان را انتخاب کنید.

انتخاب میان سه خدمتراهنمای شروع با تیم اپرا

برآورد هزینه