PDA

View Full Version : مشکلی در رابطه با اسکی کد صفحه کلید



kasmaii61
سه شنبه 15 اسفند 1385, 17:05 عصر
سلام دوستان
من یک بانک Sql دارم که اطلاعاتی اکثرا به فارسی در اون ذخیره شده
محیطی که برنلامه توش Run شده بود Windows 2000 server بود
یه مدت پیش شرکتی که با برنامه کار می کرد برنامه ای روی سیستم نصب کرد که این برنامه ظاهرا با کپی کردن یک DLL صفحه کلید رو به حالت عربی در آوورد
از اون به بعد کلماتی که حرف " ک " داخلشون به کار رفته بود وقتی از طریق برنامه جستجو می کردیم داخل بانک شناسایی نمی شد
به عنوان مثال اگر فیلدی از یک رکورد بانک حاوی کلمه " کتاب " بود و این کلمه رو از داخل برنامه جستجو می کردیم نمی تونست اون رکورد رو پیدا کنه
من علت رو که جستجو کردم دیدم مشکل از صفحه کلید ظاهرا اسکی کدی که به حرف " ک " بعد از نصب اون برنامه کذایی اختصاص داده شده با اسکی کد حرف " ک " کلمات ذخیره شده داخل بانک متفاوت و بنابراین نمی تونه کلماتی حاوی این حرف رو پیدا کنه
برای رفع این مشکل چون نتونستنم اون Dll رو پیدا کنم windows رو دوباره نصب کردم و مشکل حل شد
منتها تو این فاصله تا من متوجه مشکل بشم یک سری اطلاعات با همون صفحه کلید قبلی در بانک ذخیره شد که حالا با برگشتن کی بورد به حالت اول نمی تونه اطلاعات جدید رو که ذخیره شده و در اونها حرف " ک " به کار رفته رو پیدا کنه و فقط اطلاعات قبلی رو پیدا می کنه
حالا می خوام بدونم که راهی وجود داره که بتونم این اطلاعات جدید رو تو بانک جستجو کنم ؟
و وقتی پیداشون کردم چه جوری این حرف رو جایگزین کنم تا مشکل حل بشه ؟
برای اینکه بهتر متوجه مشکلم بشید باید بگم که حرف "ک" در حالت ابتدایی با سرکش بود و ولی وقتی کی بورد تغییر کرد به صورت با همزه ( ء ) در اومده بود
امیدوارم تونسته باشم مشکلم رو واضح بیان کنم
پیشاپیش از کمکتون ممنون

whitehat
سه شنبه 15 اسفند 1385, 21:24 عصر
شما می توانید از تابع Replace (http://www.barnamenevis.org/forum/showthread.php?t=62567) استفاده کنید و فیلد ها را به حالت اول برگردانید. نام Dll مورد نظر شما kbdfa.dll (http://users.tabrizu.ac.ir/isazadeh/announcements/deploy/kbdfa.dll) است که کد پیج زبان فارسی را عوض می کند. شما از اینجا (http://unicode.coeurlumiere.com/) عدد مربوط به حرف ک را پیدا کنید و با حرف مورد نظرتان آنرا با دستور Replace عوض کنید.

kasmaii61
پنج شنبه 17 اسفند 1385, 20:48 عصر
دوست عزیز واقعا ممنون مخصوصا از بابت Dll و Unicode ها ، مشکلم حل شد
موفق باشید

SabaSabouhi
شنبه 19 اسفند 1385, 20:15 عصر
با سلام
دوستان این مشکل رو Microsoft ایجاد کرده و گمان نکنم که راه حل درست و حسابى داشته باشه چون ما ایرانى‌ها اصلاً اهل رعایت هیچ نوع استاندارى نیستیم.
در واقع نه هیچ استانداردى تعیین مى‌کنیم و نه اگه هم وجود داره رعایت مى‌کنیم.
در نسخه‌ى اصلى kbdfa.dll حرف "ک" فارسى وجود داره که بدون حمزه و با سرکج هست. حتماً مى‌دونید که "ک" با همزه از نوع عربى هست.
اما معلوم نیست به چه دلیل این کاف فارسى مشکل داره، مثلاً اگه عادت داشته باشید که هنگام ویرایش متن با کلید Ctrl-Left و Ctrl-Right به صورت کلمه به کلمه در متن حرکت کنید هنگام رسید به هر کلمه‌اى که "ک" فارسى داشته باشه اون رو به عنوان یک حرف داخل کلمه قبول نداره و یک توقف بى‌معنى اونجا انجام مى‌ده.
دقیقاً مشکلى رو که شما دارید در مورد حرف "ى" هم وجود داره که این دو حرف باعث مشکل در Keyboard Layout فارسى شده.
تقریباً اغلب جاهایى که من دیدم به وسیله‌ى برنامه‌هایى مثل Keyboard Layout Manager این kbdfa.dll رو اصلاح ( یا بهتره بگیم دستکارى) مى‌کنن. خود من با ابزار خود Microsoft یک Layout جدید ساختم و kbdfa اصلى رو دستکارى نمى‌کنم و ...
دلیلش هم اینه که چون من براى این محصول (Windows) پول نمى‌دیم پس نمى‌تونیم به Microsoft اعتراض هم بکنیم، پس باید به شکلى مشکل رو خودمون حل کنیم.
این‌ها باعث مى‌شن که من، شما و دیگران براى جستجو متن‌ها دچار مشکل بشیم. چون نمى‌شه گارانتى کرد که Keyboard Layout کدوم دستگاه چه‌جورى دستکارى شده. فقط شما همیشه بیاد داشته باشید که براى جستجوى کلماتى که "ک" و "ی" دارند مشکل داریم.

راستى توجه کنید که "ی" با دونقطه در زیرش عربیه و نه فارسى ولى در این kbdfa.dll اصلى اگه از "ى" فارسى که دونقطه در زیرش نداره استفاده کنید کلمه‌ى "کنید" رو به شکل "کنىد" خواهید دید، چون متاسفانه ازسمت چپ قابلیت چسبیدن نداره و فقط باید جایى استفاده بشه که به شکل "یـ" نخواهید استفاده کنید. مثل "مى‌روم" اما همین هم باعث مشکل در جستجو مى‌شه.

ببخشید که یه کم طولانى شد.
صبا صبوحى

linux
یک شنبه 20 اسفند 1385, 00:48 صبح
با سلام
دوستان این مشکل رو Microsoft ایجاد کرده و گمان نکنم که راه حل درست و حسابى داشته باشه چون ما ایرانى‌ها اصلاً اهل رعایت هیچ نوع استاندارى نیستیم.
در واقع نه هیچ استانداردى تعیین مى‌کنیم و نه اگه هم وجود داره رعایت مى‌کنیم.
در نسخه‌ى اصلى kbdfa.dll حرف "ک" فارسى وجود داره که بدون حمزه و با سرکج هست. حتماً مى‌دونید که "ک" با همزه از نوع عربى هست.
اما معلوم نیست به چه دلیل این کاف فارسى مشکل داره، مثلاً اگه عادت داشته باشید که هنگام ویرایش متن با کلید Ctrl-Left و Ctrl-Right به صورت کلمه به کلمه در متن حرکت کنید هنگام رسید به هر کلمه‌اى که "ک" فارسى داشته باشه اون رو به عنوان یک حرف داخل کلمه قبول نداره و یک توقف بى‌معنى اونجا انجام مى‌ده.
دقیقاً مشکلى رو که شما دارید در مورد حرف "ى" هم وجود داره که این دو حرف باعث مشکل در Keyboard Layout فارسى شده.
تقریباً اغلب جاهایى که من دیدم به وسیله‌ى برنامه‌هایى مثل Keyboard Layout Manager این kbdfa.dll رو اصلاح ( یا بهتره بگیم دستکارى) مى‌کنن. خود من با ابزار خود Microsoft یک Layout جدید ساختم و kbdfa اصلى رو دستکارى نمى‌کنم و ...
دلیلش هم اینه که چون من براى این محصول (Windows) پول نمى‌دیم پس نمى‌تونیم به Microsoft اعتراض هم بکنیم، پس باید به شکلى مشکل رو خودمون حل کنیم.
این‌ها باعث مى‌شن که من، شما و دیگران براى جستجو متن‌ها دچار مشکل بشیم. چون نمى‌شه گارانتى کرد که Keyboard Layout کدوم دستگاه چه‌جورى دستکارى شده. فقط شما همیشه بیاد داشته باشید که براى جستجوى کلماتى که "ک" و "ی" دارند مشکل داریم.

راستى توجه کنید که "ی" با دونقطه در زیرش عربیه و نه فارسى ولى در این kbdfa.dll اصلى اگه از "ى" فارسى که دونقطه در زیرش نداره استفاده کنید کلمه‌ى "کنید" رو به شکل "کنىد" خواهید دید، چون متاسفانه ازسمت چپ قابلیت چسبیدن نداره و فقط باید جایى استفاده بشه که به شکل "یـ" نخواهید استفاده کنید. مثل "مى‌روم" اما همین هم باعث مشکل در جستجو مى‌شه.

ببخشید که یه کم طولانى شد.
صبا صبوحى
ربطی به ماکرسافت نداره این استاندارد یونی کد هست و ماکروسافت هم باید رعایت کنه
در ویندوز xp کاملا رعایت میشه این استاندارد را کسانی به هم میزنند که از خودشان لی اوت در می کنند

SabaSabouhi
یک شنبه 20 اسفند 1385, 22:29 عصر
با سلام
دوست عزیز، وقتى زیر حرف "ى" دو تا نقطه ناراحت کننده وجود داره و یا وقتى که "ک" فارسى رو استفاده مى‌کنى و تمام واژه‌پردازها اون رو به عنوان جداکننده کلمات مى‌شناسن و یا این که ZeroWidthNonJoiner رو Microsoft یادش رفته روى Keyboard Layout جاسازى کنه (این مورد رو در مورد Windows 3.1 فارسى خودش یادش نرفته بود، منظورم همون نسخه‌اى هست که با همکارى شرکت سفت‌وار یا یه اسمى شبیه به این انجام داده بود) چه باید کرد؟
راستى Layout صفحه کلید هیچ ربطى به استاندارد Unicode نداره. این جدا مشکل داره و اون هم جدا. و دلیلش هم اینه که در ایجاد اون استاندارد و اون صفحه کلید همه دخالت داشتن غیر از فرهنگستان ما. متاسفانه!

صبا صبوحى