|
اعداد فارسی در ASP.NETهمانطور که می توانيد در اين سايت ببينيد، تقريبا کليه اعداد بصورت فارسی نمايش داده شده اند. بعبارت ديگر بجای "1 فروردين 1381" عبارت "۱ فروردين ۱۳۸۱" نمايش داده شده است. همچنين اعداد درون متن مقالات هم به فارسی است. افرادی که از يونيکد استفاده کرده اند می دانند که اگرچه يونيکد تقريبا مشکل خط فارسی را حل کرده است اما مشکل تايپ اعداد فارسی در صفحه کليدهای موجود، همچنان وجود دارد. دقت داشته باشيد که مشکل در تايپ است و نه در يونيکد. بعبارت ديگر اعداد فارسی در جدول حروف يونيکد وجود دارند و حتی اعداد فارسی و عربی از يکديگر متمايز شده اند. يعنی اعداد فارسی در يونيکد بصورت "۰۱۲۳۴۵۶۷۸۹" و اعداد عربی بصورت "٠١٢٣٤٥٦٧٨٩" می باشد. حتما متوجه اختلافات ظاهری مثلا در مورد اعداد چهار، پنج و يا شش می شويد. علاوه بر اين اختلاف ظاهری، بايد توجه داشته باشيد که اصولا اين دو رشته عدد کاملا از يکديگر بواسطه کد يا شماره انتسابی به آنها يا CodePage کاملا متفاوتند. اين تفاوت در بانک های اطلاعاتی و مسائل مربوط به مرتب سازی متون مؤثر است. بسياری از کاربران سايت خواستار ارائه روش حل اين مشکل شده بودند و ما هم قول آن را داده بوديم. از طرفی مشاهده می شود که در بسياری از سايتهای فارسی اين مشکل وجود دارد و عليرغم راه حل ساده آن، ظاهرا هنوز اين مشکل وجود دارد. برای حل اين مشکل در اين سايت دو روش در نظر گرفته شده است. باز هم دقت کنيد که ما قصد صدور نسخه قطعی را نداشته و نداريم و تنها تجربيات خود را که جواب هم داده است را بيان می کنيم. مطمئن هستيم که روشهای متعدد و بهتری هم ممکن است برای حل اين مشکل وجود داشته باشد اما اين را هم می دانيم که روش های حل مسائل همواره سخت ترين روشها نيستند. بلکه گاهی اوقات روش های ساده هم می توانند مشکلات ما را تا حد قابل قبولی حل نمايند. بطورکلی ما با دو نوع نمايش عدد مواجه هستيم. يکی نمايش بصورت تايپ دستی و ديگری نمايش از طريق برنامه، مثلا خواندن از بانک اطلاعاتی يا محاسبه تاريخ شمسی از روی تاريخ ميلادي. روش دستی برای نمايش نوع دستی يک روش دستی ساده و احتمالا وقت گير داريم. و آن استفاده از جدول (نقشه) حروف ويندوز يا Character Map است. برای اينکار ابتدا از طريق منوی Start->Programs->Accessories->System Tools->Character Map برنامه مزبور را اجرا می کنيم. در ليست مقابل عبارت Font، فونت مورد نظر خود مثلا Times New Roman را انتخاب می کنيم. حال در جدول حروف، کليه حروف با شکل اين فونت را می توانيم ببينيم. دقت داشته باشيد که در اينجا بحث فونت اصلا مهم نيست. بلکه آنچه مهم است انتخاب فونتی است که يونيکد باشد مثلا همين Times New Roman يا Tahoma. حال بايد ليست اعداد فارسی را با جستجوی چشمی پيدا کنيم. اين کار با سه بار کليک بر روی ScrollBar کنار جدول قابل انجام است. در اينجا بايد بتوانيم ابتدا اعداد عربی و سپس فارسی را (با اختلاف چند حرف ميان آنها) ببينيم. با انتخاب عدد مورد نظر و سپس فشردن کليد يا دکمه Select، عدد مورد نظر در پائين جدول و مقابل ورودی Characters to copy ظاهر می شود. مثلا برای عدد ۱۳۸۱ بايد ابتدا عدد ۱، سپس عدد ۳، سپس عدد ۸ و بالاخره عدد ۱ را انتخاب کنيم. حال عدد مورد نظر تايپ شده است و می توانيم آن را به متن مورد نظر در يک برنامه ديگر منتقل کنيم. جهت اين کار کافی است با فشردن کليد يا دکمه Copy در همان پنجره جدول حروف، آن عدد را به حافظه ويندوز بسپاريم و با برگشت به متن و برنامه مورد نظر مثلا Word و انتخاب گزينه Edit->Paste يا زدن کليد Ctrl+V عدد مذکور را در محل مورد نظر قرار دهيد. روش برنامه ای در اين روش، مثلا عدد لاتين را از بانک اطلاعاتی خوانده ايم يا اينکه از طريق يک تابع تبديل مثلا تابع تبديل تاريخ يا هر روش ديگری بدست آورده ايم. جهت نمايش اعداد بصورت فارسی بايد اعداد مذکور را بوسيله يک تابع تبديل ساده، به شکل فارسی تبديل کنيم. بنابراين کار را به اينجا محدود می کنيم که يک تابع تبديل اعداد انگليسی به فارسی را بنويسيم. حتما می دانيد که کد اعداد انگليسی بين 48 و 57 است. اگر در جدول حروف يونيکد دقت کنيد کد اعداد فارسی هم از 1728 شروع می شود. بنابراين کافی است که به محدوده اعداد انگليسی مقدار 1728 اضافه نمائيم. تابع زير به زبان VBScript اين کار را انجام می دهد:
می توانيد اين تابع را در يک فايل مجزا قرار داده و با استفاده از SSI يا فايل های ضميمه، آن را در کليه فايل های سايت تان ضميمه کنيد. نحوه استفاده از اين تابع می تواند بصورت زير باشد:
يا
معادل اين تابع را می توان با هرزبانی نوشت و استفاده کرد. همچنين می توان تابعی نوشت که عمل عکس اين کار، يعنی تبديل اعداد فارسی به انگليسی را انجام دهد. دقت داشته باشيد که اين تابع می تواند خيلی کاملتر از اين باشد. بعبارت ديگر اين تابع در مورد علامت مميز ("." به "/") هيچ کاری نمی کند. توسعه اين تابع را بعهده خوانندگان گرامی می گذاريم. نویسنده:
Iranasp.net |
|
|
آخرين به روز رسانی: آمار بازدید: |