وارد کردن حروف فارسی بدون تغییر زبان کیبرد - نسخه قابل چاپ +- Parsi Coders (http://parsicoders.com) +-- انجمن: Web Development and Design (http://parsicoders.com/forumdisplay.php?fid=47) +--- انجمن: ASP, ASP.NET (http://parsicoders.com/forumdisplay.php?fid=49) +--- موضوع: وارد کردن حروف فارسی بدون تغییر زبان کیبرد (/showthread.php?tid=489) |
وارد کردن حروف فارسی بدون تغییر زبان کیبرد - Amin_Mansouri - 07-04-2011 شايد تا به حال سايت های فارسی مختلفی از قبيل سازمان سنجش، دانشگاه پيام نور و... را ديده باشيد که در هنگام ورود اطلاعات در تکست باکس های نام و نام خانوادگي و نام پدر بدون اينکه زبان کيبرد را تغيير دهيم مي توان به صورت فارسي در آن نوشت. در اين مقاله می خواهيم اين روش را توضيح دهيم. برای اين منظور ويژوال استوديو ۲۰۰۵را باز نموده يک پروژه از نوع Web Site ساخته و در صفحه Default آن دو کنترل تکست باکس (Input (Text)) از برگه Html استاندارد و يک کنترل Button از برگه Standard بر روی فرم بياندازيد.خاصيت هاي id و name را نيز در کنترل تکست باکس ها حتماً مقداردهي کنيد. سپس در Enterprise Manager در پايگاه داده Pubs يا هر پايگاه داده دلخواه يک جدول به نام Moshakhasat با ستونهای Name و Family از نوع nvarchar با طول ۱۲ و ۲۰ بسازيد. سپس بر روی کنترل Button کليک کنيد تا برای رويداد کليک آن کد زير را بنويسيم. همچنين رشته اتصال به بانک را در فايل Web.Config قرار مي دهيم. کد: Sub btn_Click(sender as system.Object, e as system.EventArgs) Handles btn.click کد فوق مربوط به اضافه کردن دو فيلد فوق به جدول مشخصات است. حال برای ورود اطلاعات به صورت فارسی بدون تغيير زبان سيستم از کد جاوا اسکريت زير استفاده می کنيم: // Farsi keyboard map based on ISIRI-2901 var farsikey = [ 0x0020, // " " 0x0021, // "!" 0x061B, // ";" 0x066B, // "," 0x00A4, // " " 0x066A, // "%" 0x060C, // "،" 0x06AF, // "گ" 0x0029, // "(" 0x0028, // ")" 0x002A, // "*" 0x002B, // "+" 0x0648, // "و" 0x002D, // "-" 0x002E, // "." 0x002F, // "/" 0x06F0, // "۰" 0x06F1, // "۱" 0x06F2, // "۲" 0x06F3, // "۳" 0x06F4, // "۴" 0x06F5, // "۵" 0x06F6, // "۶" 0x06F7, // "۷" 0x06F8, // "۸" 0x06F9, // "۹" 0x003A, // ":" //0x0643, // "ك" 0x06A9, // "ک" 0x003E, // "<" 0x003D, // "=" 0x003C, // ">" 0x061F, // "?" 0x066C, // "،" 0x0624, // "ؤ" 0x200C, // " " 0x0698, // "ژ" 0x0649, // "ی" 0x064D, // " " 0x0625, // " " 0x0623, // "ًٌٍإ" 0x0622, // " " 0x0651, // " " 0x0629, // "ًٌة" 0x00BB, // "«" 0x00AB, // "»" 0x0621, // "ء" 0x004E, // "N" 0x005D, // "[" 0x005B, // "]" 0x0652, // " " 0x064B, // " " 0x0626, // "ئ" 0x064F, // " " 0x064E, // " " 0x0056, // "V" 0x064C, // " " 0x0058, // "X" 0x0650, // " " 0x0643, // "ك" 0x062C, // "ج" 0x005C, // "\" 0x0686, // "چ" 0x00D7, // "x" 0x0640, // "-" 0x200D, // " " 0x0634, // "ش" 0x0630, // "ذ" 0x0632, // "ز" 0x06CC, // "ی" // 0x064A = ي 0x062B, // "ث" 0x0628, // "ب" 0x0644, // "ل" 0x0627, // "ا" 0x0647, // "ه" 0x062A, // "ت" 0x0646, // "ن" 0x0645, // "م" //0x067E, // "پ" 0x0626, // "ئ" 0x062F, // "د" 0x062E, // "خ" 0x062D, // "ح" 0x0636, // "ض" 0x0642, // "ق" 0x0633, // "س" 0x0641, // "ف" 0x0639, // "ع" 0x0631, // "ر" 0x0635, // "ص" 0x0637, // "ط" 0x063A, // "غ" 0x0638, // "ظ" 0x007D, // "{" 0x007C, // "|" 0x007B, // "}" 0x007E // "~" ]; var lang = 1; // 1: Farsi, 0: English function changeLang() { if (lang == 0) { lang = 1; return true; } else { lang = 0; return true; } } function FKeyDown (txtFrm){ var key = window.event.keyCode; if (key == 145){ if (lang == 0) { lang = 1; return true; } else { lang = 0; return true; } } } function FKeyPress(txtFrm) { var key = window.event.keyCode; if (key == 13) { window.event.keyCode = 13; return true; } if (lang == 1) { // If Farsi if (key == 0x0020 && window.event.shiftKey) // Shift-space -> ZWNJ window.event.keyCode = 0x200C; else window.event.keyCode = farsikey[key - 0x0020]; if (farsikey[key - 0x0020] == 92) { window.event.keyCode = 0x0698; } if (farsikey[key - 0x0020] == 8205) { window.event.keyCode = 0x067E; } } return true; } برای اين منظور در پروژه فوق (Add New Item(Ctrl+shift+A و سپس در Templates فايل Jscript File را انتخاب کرده و نام آن را به KeyFarsi تغيير دهيد و کد فوق را در آن کپی کنيد و سپس آن را ذخيره کنيد. حال در تکست باکس های TxtName و TxtFamily رويدادهای ;"('')onkeypress="FKeyPress('');" onkeydown="FKeyDown را در آن قرار می دهيم. در تکست باکس های فوق حتماً خاصيت "runat="server و در تکست باکس نام "id="TxtName و "name="TxtName را در هر کنترل قرار دهيد. و در تکست باکس فاميلي نيز اين کار انجام دهيد. همچنين در Page-Load صفحه کد زير را جهت اجرا شدن کد جاوا اسکريپت قرار دهيد: Dim script As String = "./KeyFarsi.js" Page.ClientScript.RegisterClientScriptInclude(Me.GetType, "MyKey", script) توجه :در تگ Input حتماً بايد تگ پايانی </Input> را قرار دهيد در غير اينصورت کامپايلر خطای قرار ندادن تگ پايانی را اعلام می کند. مزايا: اصلی ترين مزيت اين روش وارد شدن اطلاعات به صورت فارسی به ديتابيس و چند زبانی نشدن داده های ورودی به بانک اطلاعاتی است. استفاده از اين روش در پايگاه داده Access که با ورود اطلاعات به صورت فارسی مشکل دارد نيز مفيد می باشد. برای نمايش حروف فارسی در صفحه وب لازم است كه از charset=windows-1256 يا utf-8 استفاده نماييد. فونت صفحه را نيز يكی از دو فونت Times New Roman و يا Tahoma انتخاب نماييد. اين دو فونت فونتهای استاندارد ويندوز بوده و برای ديده شدن متون فارسی نيازی به نصب فونت جديد روی سيستم کاربر نخواهد بود. نویسنده این مطلب فکر کنم اقای کمالی بودن |