PDA

View Full Version : سوال: وقتی اطلاعات ریخته میشه داخل دیتابیس به صورت علامت سوال ریخته میشه چرا ؟؟؟



nasinas
پنج شنبه 20 مرداد 1390, 04:42 صبح
درود به دوستان

شرح : من یه جدول دارم که یکی از فیلدهاش نوعش رو ntext گذاشتم. اونوقت من مقادیر داخل یک ادیتور به نام CKEditor رو از طریق یک StoreProcedure میریزمش داخل جدول.

این کد پروسیجر مربوطه هستش :
public int UpdateEtelaiye(string etID, string Subject, string Content, string eDate, string eTime)
{
return ExecuteNoneQuery(System.Data.CommandType.StoredPro cedure, "SP_UpdateEtelaiye", new SqlParameter[] {
new SqlParameter("@etID", etID),
new SqlParameter("@Subject", Subject),
new SqlParameter("@Content", Content),
new SqlParameter("@eDate", eDate),
new SqlParameter("@eTime", eTime)});

که متغیر Content محتوایه ادیتورمونه
زمانی که میریزه داخل جدول ، محتویاتش داخل جدول تبدیل به علامت سوال میشه که خوب موقع خوندن اطلاعات هم بازم همون علامت سوال ها خونده میشه.
من فکر کردم که مشکل از نوع فیلد در جدول باشه (ntext)
میخواستم ببینم اگه مشکل از اینه راه حلی براش وجود داره؟
ممنون پیشاپیش بابت کمک :)

khz-web1
پنج شنبه 20 مرداد 1390, 06:28 صبح
سلام
در فایل web.config اینو ست کن شاید درست بشه


<globalization requestEncoding="utf-8" responseEncoding="utf-8" />

موفق باشید

ASPX
پنج شنبه 20 مرداد 1390, 09:28 صبح
شما باید در دستور Insert یا update قبل از مقدار مورد نظر حرفN را اضافه کنید.مثال:
insert into Student (name,family) values(N'امین',N'امیرخانی')

mohammad_kazem
پنج شنبه 20 مرداد 1390, 09:49 صبح
دوست عزیز راحت ترین کار اینه که توی دیتا بیس بجای ntext بذلری nvarchar(max) مشکلت حل میشه.

nasinas
پنج شنبه 20 مرداد 1390, 12:14 عصر
سلام
در فایل web.config اینو ست کن شاید درست بشه


<globalization requestEncoding="utf-8" responseEncoding="utf-8" />

موفق باشید

ممنونم ولی میشه بگین من این رو کدوم قسمت از فایل web.config قرار بدم ؟


شما باید در دستور Insert یا update قبل از مقدار مورد نظر حرفN را اضافه کنید.مثال:
insert into Student (name,family) values(N'امین',N'امیرخانی')

خوب من اگه نوع فیلد رو nvarchar بزارم درست ذخیره میشه بدون گذاشتن N ولی الان یه امتحان میکنم . ممنون


دوست عزیز راحت ترین کار اینه که توی دیتا بیس بجای ntext بذلری nvarchar(max) مشکلت حل میشه.

آره ولی من از sql server 2000 استفاده میکنم و همچین نوعی رو نداره تو خودش

nasinas
پنج شنبه 20 مرداد 1390, 12:22 عصر
شما باید در دستور Insert یا update قبل از مقدار مورد نظر حرفN را اضافه کنید.مثال:
insert into Student (name,family) values(N'امین',N'امیرخانی')

ASPX جان نوشتم ولی Error128 میداد.
ببین این کدشه :
CREATE PROCEDURE [SP_AddNewEtelaiye]
(@Subject [nvarchar](50),
@Content [ntext],
@eDate [char](10),
@eTime [char](5))

AS

begin
INSERT INTO [tbl_Bestgarape_Etelaiye]
([subject],
[content],
[eDate],
[eTime])

VALUES
(@Subject,
N@Content,
@eDate,
@eTime)
end
GO

Saman Hashemi
پنج شنبه 20 مرداد 1390, 12:45 عصر
شما باید collation دیتابیس به یکی از arabic ها تغییر بدی ...!

ASPX
پنج شنبه 20 مرداد 1390, 12:58 عصر
کد درسته ! ولی
1-بررسی کن در design ستون هات آیا ntext هستش یا text گاهی خودم این اشتباه رو انجام دادم ! :)
2- در کانکشن استرینگ charset=utf8 رو اضافه کن
مثلا

Server=server name;Database=xxxxxxxx;Uid=xxxx;Pwd=2255776;charse t=utf8
3-در ضمن باید utf8 جزو collection های sql باشه ؟ ببین هست؟ یا نه؟

nasinas
جمعه 21 مرداد 1390, 20:03 عصر
کد درسته ! ولی
1-بررسی کن در design ستون هات آیا ntext هستش یا text گاهی خودم این اشتباه رو انجام دادم ! :)


قربونت ASPX
چه اشتباهایه خوبی میکنی :))
آره همون زمان داشتم نیگاه میکردم یهو فهمیدم که به جایه ntext نوشتم text شرمنده دیگه نبودم که خبر بدم
دستتون درد نکنه
موفق باشین