PDA

View Full Version : ذخیره علامت سوال به جای حروف فارسی در sql server



omid_hasanpur
سه شنبه 03 آذر 1383, 10:55 صبح
با سلام
من اطلاعات را توسط یک تکست باکس دریافت می کنم و توسط یک دستور insert
در یک دیتابیس می ریزم ولی به جای حروف فارسی علامت سوال در دیتابیس ذخیره می شود.
در ضمن تمامی صفحات را به صورت یونیکد ذخیره کرده ام و charset را هم روی یونیکد تنظیم کرده ام.
لطفا راهنمایی کنید.
ممنون

omid_hasanpur
سه شنبه 03 آذر 1383, 11:10 صبح
راستی متغیر ها هم در دیتابیس از نوع nchar تعریف شده اند و از این دستور استفاده می کنم:

string str="insert into tbl_mytable (name,family)value('علی','اکبری')"

Vahid_Nasiri
سه شنبه 03 آذر 1383, 11:12 صبح
فقط در طول یک ماه قبل 6 بار به این سوال پاسخ داده شده :
http://www.barnamenevis.org/forum/viewtopic.php?t=14450

omid_hasanpur
سه شنبه 03 آذر 1383, 11:40 صبح
آقای نصیری واقعا ممنون.
از اینکه سوال تکراری پرسیدم معذرت میخوام.:(
باز هم به خاطر جزوه های عالی شما متشکرم :flower: :kaf:

majid_cs
یک شنبه 10 مهر 1384, 11:49 صبح
آقای نصیری لینکی که ارائه کردید کار نمیکنه.
بی زحمت یا لینک رو اصلاح کنید یا یه بار دیگه توضیح بدید که شدیدا مورد نیازه.
ممنون.

majid_cs
یک شنبه 10 مهر 1384, 11:57 صبح
من خودم یه لینک جدید پیدا کردم:
http://behrooznp.com/weblog/blogarchive.aspx?id=100184

Behrouz_Rad
یک شنبه 10 مهر 1384, 13:00 عصر
سه شنبه 03 آذر 1383

یکشنبه 10 مهر 1384

shahroozj
چهارشنبه 13 مهر 1384, 09:31 صبح
query string خود را به شکل زیر تغییر دهید :



string str="insert into tbl_mytable (name,family)value(N'علی',N'اکبری')"

brida_kh
پنج شنبه 14 مهر 1384, 21:30 عصر
سلام . باید نوع فیلدتون توی بانک nvarchar باشه و قبل از همه یک N بگذارید
مثلا :"'+N'"+texbname.tex :لبخند:

صابر
جمعه 15 مهر 1384, 00:28 صبح
از قدیم قدیما با فارسی نوشتن توی SQL Server مشکل داشتم!
اطلاعات درست توی دیتابیس می‌ره، codepage صفحه Unicode UTF-8 هست، اما با این حال اطلاعات فارسی به صورت علامت سوال توی بانک ذخیره می‌شه.
حالا راه حل رو اینجا می‌ذارم که اگه حداقل خودم یادم رفت بیام ببینم!

شما یک دیتابیس دارین و این مشکل رو داره، به احتمال زیاد مشکل از اینجاست که Collation روی Latin تنظیم شده و باید به Arabic تبدیل بشه.
خب، پس به قسمت SQL Query Analyzer می‌ریم و این دستور Transact SQL رو می‌نویسیم:
ALTER DATABASE databasename COLLATE Arabic_CI_AI

اما بعد از اجرا، احتمالاً یک پیغام خطا می‌گیریم!
The database could not be exclusively locked to perform the operation
برای حل این مشکل، باید ابتدا دیتابیس رو به حالت single user برد، در آخر هم اونو به multi user برگردوند!
پس این دستورات مشکل ما رو حل می‌کنه:


ALTER DATABASE dbname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE dbname COLLATE Arabic_CI_AI
ALTER DATABASE dbname SET MULTI_USER

اختصارات بعد از نام زبان به چه معنی‌ست


CaseSensitivity
CI specifies case-insensitive, CS specifies case-sensitive.
AccentSensitivity
AI specifies accent-insensitive, AS specifies accent-sensitive.
KanatypeSensitive
Omitted specifies case-insensitive, KS specifies kanatype-sensitive.
WidthSensitivity
Omitted specifies case-insensitive, WS specifies case-sensitive.
BIN
Specifies the binary sort order is to be used.


http://www.maghalat.com/item_35.aspx

amirjo0on
پنج شنبه 27 اردیبهشت 1397, 17:11 عصر
اینکارو کردم دیتابیس از کار افتاد چجوری به حالت اول برگردونمش؟ حتی بک آپم نمیده