PDA

View Full Version : علامت ؟ به جای حروف فارسی در SQL



hozouri
جمعه 01 خرداد 1388, 22:08 عصر
با سلام
من موقعی که در برنامه می خوام اطلاعاتی رو به فارسی ثبت کنم به جای کاراکترهای فارسی علامت ؟ نمایش داده می شه.
در SQL هیچ مشکلی نیست . موقع تایپ در SQL و ثبت همه چیز عادیه و فارسی ثبت میشه در حالی که در برنامه مشکل هستش.
قبلاً با این برنامه کار کردم و اطلاعات درست ثبت می شد اما یه شبه این اتفاق افتاده.
من فکر می کنم نه مشکل از SQL و نه C# این مشکلیه که ویندوز به وجود آورده شما چی می گید ... ؟؟؟ :متعجب:

xcomlock
جمعه 01 خرداد 1388, 22:25 عصر
SqlCommand com = new SqlCommand("INSERT INTO Table1 (source) VALUES (N'" + source_values + "')", conection);
این N مشکلت رو حل میکنه
موفق باشید

afsharm
شنبه 02 خرداد 1388, 19:35 عصر
وقتی که از توی خود دیتابیس (مثلا در SQL Server Management Studio) اطلاعات را می‌بینید باز هم علامت سوال دیده می‌شود؟

hozouri
یک شنبه 03 خرداد 1388, 13:55 عصر
وقتی که از توی خود دیتابیس (مثلا در SQL Server Management Studio) اطلاعات را می‌بینید باز هم علامت سوال دیده می‌شود؟

بله همين طور است

hozouri
یک شنبه 03 خرداد 1388, 13:56 عصر
SqlCommand com = new SqlCommand("INSERT INTO Table1 (source) VALUES (N'" + source_values + "')", conection);
این N مشکلت رو حل میکنه
موفق باشید


براي همه رشته ها اين N رو بذارم يا يكي براي همه كافيه

Hamid.Mayeli
یک شنبه 03 خرداد 1388, 14:35 عصر
اگه برات امکان داره Collection سرورت و دیتابیست رو عوض کن، که نخوای با nvarchar کار کنی و varChar کارتو راه میندازه.

hozouri
یک شنبه 03 خرداد 1388, 16:02 عصر
Collection رو هم درست ست كردم و فيلدي هم براي آزمايش varchar گذاشتم ولي باز هم اين مشكل هست . مشكل از جاي ديگس چون اين برنام رو روي كامپيوتر ديگه تست كردم درست بود شايد مشكل از ويندوز باشه ؟؟!!

meysam_pro
یک شنبه 03 خرداد 1388, 16:39 عصر
Collection رو هم درست ست كردم و فيلدي هم براي آزمايش varchar گذاشتم ولي باز هم اين مشكل هست . مشكل از جاي ديگس چون اين برنام رو روي كامپيوتر ديگه تست كردم درست بود شايد مشكل از ويندوز باشه ؟؟!!

اولا Collection نیست و Collation!
اگه موقع اضافه کردن N قبل از رشته بزاری حل میشه. به ویندوز ربطی نداره.

shervin_agh67
یک شنبه 03 خرداد 1388, 17:24 عصر
وقتی که از توی خود دیتابیس (مثلا در SQL Server Management Studio) اطلاعات را می‌بینید باز هم علامت سوال دیده می‌شود؟
خوب اگه اینطوره یعنی شما در زمان نصب SQL زبان Arabic رو براش نصب نکردید چون من دقیقا همین مشکل رو داشتم و با تغییر زبانش مشکل حل شد . ولی اگه اطلاعاتت از داخل دیتابیس قابل رویته مشکلت همون N هست.

afsharm
دوشنبه 04 خرداد 1388, 08:32 صبح
Collation یا زبان مربوط به مواردی مثل نحوه سورتینگ یا فرمت تاریخ و ساعت است و ربطی به اطلاعات داخل جداول ندارد. اگر فیلدی از نوع nchar یا nvarchar تعریف شده باشد قابلیت ذخیره کاراکترهای ۲ بایتی یونیکد و در نتیجه الفبای زبان فارسی را دارد.
اگر همانطور که گفتید اطلاعات را از داخل دیتابیس هم به صورت علامت سوال می‌بینید فکر می‌کنم به دردسر افتاده‌اید. این یعنی SQL Server در هنگام ورود اطلاعات نفهمیده شما چه می‌گویید و به جای اطلاعات شما علامت سوال وارد کرده است. متاسفانه (تا آنجا که من می‌دانم) در این حالت اطلاعات شما از بین رفته است و باید از اول وارد شود.
برای جلوگیری از وقوع این مشکل همان طور که همه دوستان اشاره کردند در هنگام ورود اطلاعات به جداول از عملگر N استفاده کنید. این عملگر به SQL Server می‌گوید که با این رشته به صورت کاراکترهای یونیکد (۲ بایتی) برخورد کند.

daneshjoo2
دوشنبه 04 خرداد 1388, 09:38 صبح
با سلام
یه راه دیگه علاوه بر استفاده از N ، استفاده از پارامترهاست، بدین صورت که بعد از نوشتن SQLCommand مقادیر رو به صورت پارامتر بهش اضافه کنی. از مزیت این راه امنیت و validate شدن اطلاعات قبل از ورود به دیتابیسه.

hozouri
دوشنبه 04 خرداد 1388, 15:26 عصر
خب از راهنمايي شما ممنونم ولي چرا وقتي ويندوز رو عوض كردم (همون ويندوز قبلي رو هم نصب كردم)
ديگه اين مشكلات پديدار نشد اگه اين ها مربوط به SQL باشه پس الآن هم نبايد درست عمل كنه !!!

afsharm
دوشنبه 04 خرداد 1388, 19:35 عصر
خب از راهنمايي شما ممنونم ولي چرا وقتي ويندوز رو عوض كردم (همون ويندوز قبلي رو هم نصب كردم)
ديگه اين مشكلات پديدار نشد اگه اين ها مربوط به SQL باشه پس الآن هم نبايد درست عمل كنه !!!

یعنی همون دیتابیس را در ویندوز دیگری مورد استفاده قرار دادی و همه چیز درست شد؟ چه از داخل برنامه خودتان چه به طور مستقیم از داخل SQL Server؟

hozouri
سه شنبه 05 خرداد 1388, 09:31 صبح
یعنی همون دیتابیس را در ویندوز دیگری مورد استفاده قرار دادی و همه چیز درست شد؟ چه از داخل برنامه خودتان چه به طور مستقیم از داخل SQL Server؟

بله دقیقاً همه موارد صادق بود ... فکر کنم مشکل از آپدیت ویندوز باشه !

afsharm
سه شنبه 05 خرداد 1388, 12:32 عصر
به نظر می‌آد اطلاعات مورد نظر به صورت غیر یونیکد ذخیره شده باشن. چون به ویندوز و کدپیج پیش فرض آن وابسته هستند. بهتره همه فیلدها از نوع nchar یا nvarchar تعریف شده و به هنگام ورود اطلاعات از عملگر N استفاده شود. اینطوری هر وقت که ویندوز عوض کردی این اتفاق نمی‌افته.

Sociant
دوشنبه 12 مرداد 1388, 02:32 صبح
بهتره همه فیلدها از نوع nchar یا nvarchar تعریف شده و به هنگام ورود اطلاعات از عملگر N استفاده شود. اینطوری هر وقت که ویندوز عوض کردی این اتفاق نمی‌افته.

همه این کارها رو انجام دادم ولی بازم بشکل علامت سوال ذخیره میشه!!!
چرا؟!!




"Insert Into lab_married(male_name,male_father_name,male_age,"
+ "female_name,female_father_name,female_age) Values(N'" + textBoxMName.Text + "',N'"
+ textBoxMFatherName.Text + "',N'" + textBoxMAge.Text + "',N'" + textBoxFName.Text + "',N'"
+ textBoxFFatherName.Text + "',N'" + textBoxFAge.Text + "')";

afsharm
جمعه 16 مرداد 1388, 09:01 صبح
همه این کارها رو انجام دادم ولی بازم بشکل علامت سوال ذخیره میشه!!!
چرا؟!!




"Insert Into lab_married(male_name,male_father_name,male_age,"
+ "female_name,female_father_name,female_age) Values(N'" + textBoxMName.Text + "',N'"
+ textBoxMFatherName.Text + "',N'" + textBoxMAge.Text + "',N'" + textBoxFName.Text + "',N'"
+ textBoxFFatherName.Text + "',N'" + textBoxFAge.Text + "')";



این طور که پیداست فراخوانی این کد به صورت Embeded است یعنی از داخل C#‎ یا وبی یا دلفی صدا زده می‌شه. مطمئن نیستم در این طور حالات نیازی به استفاده از عملگر N باشد. یک بار هم بدون N استفاده کن. ببین درست می‌شه یا نه.

AzarFazel
سه شنبه 20 مرداد 1388, 11:56 صبح
سلام.منم همین مشکل رو دارم ، همه کارهایی که دوستان تو پست های قبلی گفتن رو هم انجام دادم.ولی هنوز مشکل دارم.من از vs 2008 استفاده می کنم و SQL sever 2005. به اینا که ربطی نداره؟!!

حامد_رشنو
سه شنبه 20 مرداد 1388, 12:21 عصر
درود بر همه دوستان
منم يه روزي اين مشكلو داشتم ولي حل شد.
براي حل اين مشكل بايد در زمان ساخت بانك اونجايي كه اسم بانكو تعيين ميكنيد پايين صفحه از قسمت collation name گزينه ي arabic_ci_ai رو انتخاب كنيد.
البته از نوع nvarchar هم استفاده كنيد.

حامد رشنو...

javady_joon
شنبه 30 خرداد 1394, 14:31 عصر
سلام البته خیلی از زمان این پست میگذره اما خوب من هم تجربه ی خودم رو قرار می دم برای استفاده آیندگان...
من این مشکل رو داشتم از پارامتر N استفاده کردم و البته تعریف بانک رو روی nvarchar قرار دادم اگر از پارامتر N استفاده کنیم ولی تعریف بانک روی nvarchar نباشه عمل نمیکنه
ممنون.

alireza264
دوشنبه 01 تیر 1394, 02:26 صبح
سلام البته خیلی از زمان این پست میگذره اما خوب من هم تجربه ی خودم رو قرار می دم برای استفاده آیندگان...
من این مشکل رو داشتم از پارامتر N استفاده کردم و البته تعریف بانک رو روی nvarchar قرار دادم اگر از پارامتر N استفاده کنیم ولی تعریف بانک روی nvarchar نباشه عمل نمیکنه
ممنون.
سلام
مشکل این دوستمون توی استفاده از فارسی ساز کیبرده بجای Fa احتمالا از FAS استفاده میکرده بهمین خاطر بعد نصب مجدد ویندوز مشکلش هم حل شده