نمایش علامت سوال به جای حروف فارسی در Sql Server
در قسمت Sp_UserLeaveReprt دستور زیر رو نوشتم
ALTER Procedure Sp_UserLeaveReprt
@FromDate datetime,
@ToDate Datetime,
@userid varchar(max),
@LeaveType int
As
Begin
if (@LeaveType = -1)
Begin
select
LeaveType,
(Case When LeaveType = 1 Then 'ساعتی' When LeaveType = 2 Then 'استحقاقی' When LeaveType = 3 Then 'استعلاجی' When LeaveType = 4 Then 'بدون حقوق' Else '' End) As LeaveTypeDesc
from Leave_Tbl
where UserID_Request = @userid
And ((FromDate_Day >= @FromDate And ToDate_Day <= @ToDate)
Or
(FromTime_Saati >= @FromDate And FromTime_Saati <=@ToDate))
End
else
Begin
select
LeaveType,
(Case When LeaveType = 1 Then 'ساعتی' When LeaveType = 2 Then 'استحقاقی' When LeaveType = 3 Then 'استعلاجی' When LeaveType = 4 Then 'بدون حقوق' Else '' End) As LeaveTypeDesc
from Leave_Tbl
where UserID_Request = @userid
And LeaveType = @LeaveType
And ((FromDate_Day >= @FromDate And ToDate_Day <= @ToDate)
Or
(FromTime_Saati >= @FromDate And FromTime_Saati <=@ToDate))
End
End
و بعداز اینکه در اسکیوال سرور درخواست اطلاعات کردم فارسی نمایش نداد و به جاش کارکتر فارسی علامت؟ ظاهر شد
پاسخ هوش مصنوعی
مشکل نمایش علامت سوال به جای حروف فارسی در SQL Server عموماً به دلیل تنظیمات نادرست در نوع داده یا کدگذاری کاراکترها است. برای اطمینان از اینکه حروف فارسی به درستی ذخیره و بازیابی می شوند، می توانید از نوع داده `nvarchar` به جای `varchar` استفاده کنید. نوع داده `nvarchar` برای ذخیره سازی کاراکترهای یونیکد مناسب است و به شما این امکان را می دهد تا حروف غیرانگلیسی مانند فارسی را به درستی نمایش دهید.
در کد شما باید تغییرات زیر را اعمال کنید:
ALTER Procedure Sp_UserLeaveReprt
@FromDate datetime,
@ToDate Datetime,
@userid nvarchar(max), -- تغییر به nvarchar
@LeaveType int
As
Begin
if (@LeaveType = -1)
Begin
select
LeaveType,
(Case When LeaveType = 1 Then N'ساعتی' When LeaveType = 2 Then N'استحقاقی' When LeaveType = 3 Then N'استعلاجی' When LeaveType = 4 Then N'بدون حقوق' Else '' End) As LeaveTypeDesc
from Leave_Tbl
where UserID_Request = @userid
And ((FromDate_Day >= @FromDate And ToDate_Day <= @ToDate)
Or
(FromTime_Saati >= @FromDate And FromTime_Saati <= @ToDate))
End
else
Begin
select
LeaveType,
(Case When LeaveType = 1 Then N'ساعتی' When LeaveType = 2 Then N'استحقاقی' When LeaveType = 3 Then N'استعلاجی' When LeaveType = 4 Then N'بدون حقوق' Else '' End) As LeaveTypeDesc
from Leave_Tbl
where UserID_Request = @userid
And LeaveType = @LeaveType
And ((FromDate_Day >= @FromDate And ToDate_Day <= @ToDate)
Or
(FromTime_Saati >= @FromDate And FromTime_Saati <= @ToDate))
End
End
توجه داشته باشید که پیش از هر رشته متنی که کویری را باز می گرداند، از حرف بزرگ N برای نشان دادن اینکه این یک رشته یونیکد است، استفاده کنید. این تغییرات باید مشکل شما را حل کند و حروف فارسی به درستی نمایش داده شوند.
اگر در دیتابیس DataType رو به صورت nvarchar تعریف کردید نباید مشکلی باشه. احتمالا توی کوئری که دارید یک تبدیل نوع داره انجام میشه. بهتره قبل از حروف فارسی از N استفاده کنید تا به نوع nvarchar تبدیل بشه. کوئری شما به شکل زیر تبدیل میشه :
ALTER Procedure Sp_UserLeaveReprt
@FromDate datetime,
@ToDate Datetime,
@userid varchar(max),
@LeaveType int
As
Begin
if (@LeaveType = -1)
Begin
select
LeaveType,
(Case When LeaveType = 1 Then N'ساعتی' When LeaveType = 2 Then N'استحقاقی' When LeaveType = 3 Then N'استعلاجی' When LeaveType = 4 Then N'بدون حقوق' Else '' End) As LeaveTypeDesc
from Leave_Tbl
where UserID_Request = @userid
And ((FromDate_Day >= @FromDate And ToDate_Day <= @ToDate)
Or
(FromTime_Saati >= @FromDate And FromTime_Saati <=@ToDate))
End
else
Begin
select
LeaveType,
(Case When LeaveType = 1 Then N'ساعتی' When LeaveType = 2 Then N'استحقاقی' When LeaveType = 3 Then N'استعلاجی' When LeaveType = 4 Then N'بدون حقوق' Else '' End) As LeaveTypeDesc
from Leave_Tbl
where UserID_Request = @userid
And LeaveType = @LeaveType
And ((FromDate_Day >= @FromDate And ToDate_Day <= @ToDate)
Or
(FromTime_Saati >= @FromDate And FromTime_Saati <=@ToDate))
End
End
وقتی از N قبل از حروف فارسی یا عربی استفاده می کنید اگر DataType از نوع varchar یا char باشه تبدیل به nvarchar یا nchar میشه.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- حذف کامل یک رکورد در جدول ریلیشن شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- تفاوت اوراکل و Sql Server چیست
- جابه جایی سطر و ستون در Sql Server
- استفاده از Stored Procedure در انتیتی فریم ورک code First
- آپدیت لیستی از رکوردها در Sql Server - آپدیت گروهی اطلاعات در Sql Server
- دلیل پرش 1000 تایی خودکار فیلد identity در Sql server
- مشکل نمایش ندادن Data Type موقع تایپ در Sql Server
- کار با تاریخ شمسی وساعت (استفاده از توابع )