مشکلات زبان فارسی در صفحات وب وروش استفاده
یکی از مشکلات زبان فارسی در صفحات وب، وجود استانداردهای متفاوت برای کدهای حروف و صفحهکلید میباشد که خوشبختانه با جا افتادن استاندارد ۲۹۰۱ و در ادامه آن استانداردهای ۶۲۱۹ و ۹۱۴۷ تا حدودی سر و سامان گرفته است. مشکل اینجاست که هنوز هم کاربران زیادی هستند که صفحه کلید آنها به صورت استاندارد نیست و بیشترین مشکل هم در حروف ی و ک وجود دارد که در بسیاری موارد به اشتباه به صورت عربی آن (ی و ک) وارد میشود.
راه حل متداول این مشکل این است که تمام رشتههای ورودی کاربر، قبل از استفاده بررسی شوند و حروف مشکلدار آنها تصحیح گردد ولی مشکلی که این روش دارد اینست که هم کار زیادی برای برنامهنویس ایجاد میشود و هم ممکن است برخی قسمتها از قلم بیافتد و همیشه این شک وجود دارد که آیا رشتهها به طور کامل بررسی شدهاند یا نه؟
راه حل من برای این مشکل اینست که به طور یکپارچه، تمام ورودی ها قبل از اجرای هر کدی توسط یک HttpModuleتصحیح گردند. به این صورت در هیچ قسمت برنامه نیازی به تغییر نیست و بدون توجه به آرایش صفحه کلید کاربران سایت، ورودیهای دریافت شده توسط برنامه، همیشه با فرمت صحیح خواهند بود. در اینجا HttpModule مورد بحث را ارایه دادهام.
روش استفاده:
برای استفاده کافیست که dll ضمیمه شده را به پروژه اضافه کرده و در فایل web.config در بخش httpModules آن را معرفی کنید.
<configuration>
<system.web>
<httpModules>
<add name=”FixFarsiCharsModule” type=”FixFarsiCharsModule.FixFarsiCharsModule” />
</httpModules>
</system.web>
</configuration>
پس از اضافه کردن این قسمت، دیگر در برنامه ورودی غیر مجاز دریافت نخواهد شد و این ماژول به طور خودکار ورودیهای کاربران را قبل از رسیدن به دست برنامه تصحیح خواهد کرد.
این تصحیح در قسمتهای مختلف شامل ورودیهای فرمها، کوئری استرینگ، کوکیها و ورودیهای با فرمت JSON انجام میشود. همچنین به طور خودکار این اسکریپ ورودیهای مخصوص ASP.NET مانند ViewState را شناسایی کرده و از تغییر آنها جلوگیری میشود.
تنها نکتهای که در استفاده از این اسکریپت وجود دارد، اینست که در مرحلهای که این اسکریپت کار خود را انجام میدهد، هنوز کنترلها مشخص نیستند و به عنوان مثال معلوم نیست که مقدار ورودی، یک ورودی از یک TextBox است یا مقدار یکDropDownList. بنابراین اگر برای کنترلهایی مثل DropDownList، مقادیر Value به صورت فارسی وارد شوند، آنها نیز تصحیح میگردند. در نتیجه باید دقت کرد که در صورت استفاده از این ماژول یا Valueها در کنترلهایی مثل این به صورت صحیح وارد شود. البته در حالت کلی توصیه من اینست که تا حد امکان از متن فارسی در Valueها استفاده نکنید و متن فارسی را فقط برای ویژگی Text استفاده کنید و برای Value از مقادیری مثل عددها استفاده کنید.