فارسي در ASP & MS SQL- مشكل "ى"

bono056

Member
سلام
چندتا سوال در مورد فارسي دارم. ممنون ميشم جواب بدين:ASP & MSSQL
اول: اينكه من اطلاعاتمو بصورت فارسي تو SQL ذخيره كردم. يعني تو بانك هم ميتونم فارسي رو بخونم. اين درسته؟ وقتي از UNICODE استفاده مي كنيد اطلاعات بانك بايد بصورت فارسي باشه يا يك سري كد؟
دوم: با اين كاري كه من كردم توي SEARCH كردن يه مشكلي پيدا كردم. حرف "ي" رو با جملات SQL پيدا نميكنه. مثلا من تو بانكم كلمه "ديسك" دارم. وقتي ميزنم "سك" پيدا ميكنه. ولي "ديسك" رو نه.
ممنون
 

omidak

Active Member
سلام:
اين مشكلات هست.
برايه اين كار من توصيه ميكنم تمام حروف رو به حروف بزرگ برگردونيد ( هم ديتابيس و هم اطلاعات جستجو ) و بعد جستجو كنيد. :wink:
 

pirooz

Member
مشكل حرف ي ناشي از اين است كه در ويندوز 2000 و xp حرف «ي» يي كه بر روي كليد D قرار دارد، آن حرف «ي» يي نيست كه در ويندوز 98 بر روي كليد D هست. به اين معني كه حرف ي با دو نقطه زير آن، كه به عنوان ي اصلي در ويندوز 98 بر روي كليد D است، در ويندوز xp بر روي كليد تركيبي shift + X قرار داد.
مشكل شما شايد به خاطر اين باشد كه ممكن است اطلاعات بانك اطلاعات شما با حرف ی بدون نقطه در بانك ذخيره شده باشد و شما با حرف ي دو نقطه در جست‏وجو به دنبال آن مي‏گرديد.
راه حل آن است كه شما تمام ي ها را در بانك اطلاعات خود به ي دو نقطه تبديل كنيد و در باكسي هم كه براي دريافت كلمه مورد جست‏وجو به كار مي‏بريد، با نوشتن جاوا اسكريپت، حروف ی (بدون نقطه) را تبيدل به ي (دو نقطه) كنيد.
همينطور حرف ك كه محل آنها در ويندوز 98 و xp بر روي يك كليد قرار دارد و شماره كاركتر آنها با هم فرق دارد. در واقع كاف بدون سركش (ك) در ويندوز xp همان كافي است كه بر روي كليد : در ويندوز 98 تايپ مي‏شود.
با يك برنامه اصلاح صفحه كليد (موجود در قسمت داونلود سايت مجيد آنلاين) شما مي‏توانيد مشكل حروف ك و ي را در ويندوز xp و 2000 مرتفع كنيد.
 

bono056

Member
مشكل از اين مواردي كه گفتين بنظر نمياد باشه.
من يه جدول جديد تو SQL درست كردم و حروف الفبا رو توش ريختم. هز دوتا ى هم توشه. ولي جمله SQLاي مثل اين هيجي پيدا نميكنه.
SELECT * FROM myTable WHERE name
="ي"
هر دو تا ي هم امتحان كردم.
 

pirooz

Member
سلام
عزيز من اين جمله اس. كيو. الي كه نوشتي به اين معنيه كه از جدولت، ركوردهايي رو از فيلد نام براي شما پيدا كنه كه محتوياتش فقط «ي» باشه. شما براي پيدا كردن حرف «ي» در هر جايي كه باشه، بايد از عبارت like استفاده كنيد.
دستور را بايد به اين صورت بنويسي:
کد:
strsql = "SELECT* FROM mytable WHERE name LIKE '%ي%'"
اون طور كه شما نوشتيد، اگه بخواي امتحان كني، بايد يه ركورد درست كني كه توي فيلد name فقط يه حرف «ي» داشته باشه. اينجوري حتماً اون رو برات پيدا مي‏كنه.!

اميدوارم تونسته باشم مطلب رو برسونم!! :wink:
 

bono056

Member
"عزيز من"
مشكل من "معني جملات SQL" و فرق Shift+ X با D
و طرز نوشتن Like نيست.

اميدوارم تونسته باشم مطلب رو برسونم:)
 

pirooz

Member
سلام
ميشه واضح‌تر بفرماييد مشكل شما چيه؟

ببين شما مي‌گي كلمه ديسك رو كه مي‌زني چيزي پيدا نمي‌كنه ولي «سك» رو كه مي‌زني پيدا مي‌كنه اين واضحه مشكل شما ربطي به حرف «ي» داره.
براي رفع اين مشكل من پيشنهاد كرده بودم كه شما تمام حروف ی رو تبديل به ي بكنيد، تا مشكل شما حل بشه اما شما اطلاعات جديدي رو داخل بانك ريختيد كه حرف ي هم يكي از اونهاست. بعد با يك دستور اشتباه sql دنبال اون گشتيد و پيدا نكرده و فكر كرديد مشكل از چيز ديگه‏اي هست.
شما براي امتحان، يه كار بكن:
تمام ی ها رو با ي replace كن! بعد همان كلمه «ديسك» رو امتحان كن ببين چي مي‏شه.‏

اميدوارم مشكل شما حل بشه...
شايد هم من دارم زيادي گير مي‏دم :(
 

omidak

Active Member
سلام:
اون اميد يه چيزي برايه اين كار نوشته بود كه مال mySQL و PHP بود من ازش میپرسم که چی کار کرده بود و اون رو به Asp تبدیل میکنم و بهتون Code اش رو میدم :wink:
 

bono056

Member
سلام
ممنون.
شما هم به اين مشكل برخورديد؟
اينقدر اين مشكل مسخره به نظر مياد كه فكر ميكنم يه جاي كار يه سوتي دادم.
 

omidak

Active Member
سلام:
خوب من اينو روش ور رفتم از اون اميد هم كمك گرفتم. متوجه شدم كه خوده .Net با CodePage1200 با SQLServer ارتباط برقرار میکنه. شما باید CodePage رو 1200 کنید و حتماً با 1200 هم صفحه رو ذخیره کنید :wink:
 

bono056

Member
سلام
مرسي.
من با ASP دارم اين كارو ميكنم.
ضمن اينكه اين مشكل مربوط به ASP نيست.
تو خود SQL هم من SEarch گردم چيزي پيدا نميكنه.
شرمنده اخلاقتم.
 

omidak

Active Member
سلام:
شما تمام DataType ها رو به پیشوند n ثبت کنید و همچنین از CodePage 1200
من که این رو تازه بهش برخوردم و امتحان که میکنم انگار که از اول فارسی ساخته شده این برنامه :wink:
 

bono056

Member
سلام
ظاهرا اين مشكل مربوط به ي فارسيه. تو صفحه كليد عربي اين مشكل نيست.
 

pirooz

Member
عزيزم حالا رسيدي به حرف من؟؟ 8O

چه طوري متوجه اين موضوع شدي؟ مي‌شه توضيح بدي؟

ي فارسي كه شما مي‏فرماييد، همون «ي»يي است كه دو نقطه زيرش نداره.

بروز اين مشكل چند دليل داره:
يكي اينكه شما از برنامه مبدل نور استفاده كنيد. اين برنامه تمام «ي» هايي رو كه در برنامه زرنگار استفاده شده با يك «ي» ديگه غير از اين «ی» بي‏نقطه و «ي» خود ويندوز جايگزين مي‏كنه.‏
يعني در واقع مشكل شد سه‏تا!!!

يا اينكه هنوز در ويندوز ايكس‏.پي داريد تايپ مي‏كنيد و هنوز صفحه كليد خودتون رو اصلاح نكرديد.!!

فكر مي‏كنم منظور شما از صفحه كليد عربي هم صفحه كليد ويندوز 98 عربي باشه. درسته اون ي، همون «ي» دونقطه است كه در ويندوز ايكس. پي. بر روي كليد shift + X قرار داره.!

موفق باشي.‏
 

bono056

Member
سلام
اون موقع من روي سروري كه winXP روش نصب بود اين مشكل رو داشتم. ولي وقتي برنامه رو روي سروري كه win serever 2003 داشت نصب كردم مشكل حل شد.
حالا براي كار ديگه اي رو win200 دارم كار ميكنم و اصلا به كل حروف فارسي رو ساپورت نميده.
اين طبيعيه؟
 

bono056

Member
سلام
ببين مشكل اصلا ربطي به صفحات ASP يا هر interface ديگه اي نداره.
الان من تو خود SQL يه ركورد با محتواي "م" ايجاد ميكنم. ولي اين جمله SQL هيچ نتيجه اي برنميگردونه.
SELECT * FROM Tnl1 WHERE fld="م"
 

جدیدترین ارسال ها

بالا