در برنامهنویسی رایانه و کار با دادهها و پایگاههای داده (از دیتابیسهای ساده مانند اکسل تا دادههای عظیم کشوری) یکی از چالشها برای زبان فارسی، این است که تعدادی حرف با شکل نمایشی یکسان یا مشابه اما با شناسه یونیکد متفاوت وجود دارد که ممکن است به جای یکدیگر استفاده شوند.
یکی از مثالهای معروف آن «ي» و «ی» هستند که اولی یای عربی است و چون زودتر از یای فارسی وارد کدپیجهای سیستمعاملها و چینش کیبوردها شده است، تقریبا در تمام دادههای قدیمی به جای آن به کار رفته است. متاسفانه بعد از معرفی یونیکد 1.1 (ژوئن 1993) هم که هر دو حرف در آن معرفی شدند، به دلیل آنکه بعضی فناوریهای قدیمی مثل فلش و جاوا هیچگاه درست یای فارسی را پشتیبانی نکردند، بسیاری از دادهها با این حرف ثبت شده است یا میشود.
و حالا مشکل این بهکارگیری جابجای حروف همشکل چیست؟ خب، متاسفانه یا خوشبختانه منطق رایانه شباهت ظاهری را نمیفهمد و حروف مشابه را از هم کاملا جدا میداند. حالا فرض کنید یک پایگاه داده از نام و نام خانوادگی افراد دارید و میخواهید کاربر نامی را به نرمافزار بدهد و در پایگاه داده جستجو کند. کاربر مینویسد «علی» و آن را جستجو میکند اما هیچ نتیجهای پیدا نمیشود! چرا؟ چون کارمندی که نامها را وارد کرده بود از یک سیستم پنتیوم با ویندوز 98 و فارسیساز پارسا 99 استفاده میکرده که کیبورد فارسی آن فقط «ي» داشته 😂 پس «علی» نداریم بلکه «علي» داریم که از نظر حروفی با هم فرق دارند…
در این مطلب سعی میکنم تا حروفی که معمولا با یکدیگر اشتباه گرفته میشوند را قرار دهم تا در طراحی برنامهها برای استانداردسازی استفاده شود:
انواع اعداد
اعداد فارسی:
۰۱۲۳۴۵۶۷۸۹
اعداد عربی:
٠١٢٣٤٥٦٧٨٩
(بله! «١» (U+0661) با «۱» (U+06F1) فرق دارد!)
اعداد انگلیسی:
0123456789
حروف یاء
Arabic Letter Yeh:
ي (U+064A)
Arabic Letter Alef Maksura (مشهور به یای مکاواس):
ى (U+0649)
Arabic Letter Farsi Yeh (یای فارسی واقعی):
ی (U+06CC)
حروف کاف
Arabic Letter Keheh (کاف فارسی واقعی):
ک (U+06A9)
Arabic Letter Kaf:
ك (U+0643)
میتوانید از اینجا حروف ردهی عربی یونیکد را ببینید. شما چه حروفی میشناسید که با هم اشتباه گرفته میشوند؟