shahramasp
پنج شنبه 24 فروردین 1385, 11:01 صبح
میخوام صفحاتم رو روی فارسی UTF-8 تنظیم کنم به هم میخوره ولی رو Arabic جواب میده لطفا کمک کنید فوری فوری
shahramasp
پنج شنبه 24 فروردین 1385, 11:10 صبح
رفقا خودم کشف کردم :) از این متن زیر :
((چگونه می توانم از طریق یک صفحه ASP.NET اطلاعات فارسی را وارد SQL Serverکنم و همان اطلاعات را بدون مشکل در یک صفحه دیگر نمایش دهم؟)) ، ((چرا وقتی اطلاعات را وارد database میکنم به صورت ????? در میآید؟))
اینها پرسشهایی است که معمولا اکثر برنامه نویسان مبتدی ASP.NET چند روز و گاهی چند هفته با آن دست به گریبانند. در حالی که پاسخ بسیار ساده و روان است. من در اینجا توضیحاتی میدهم و امیدوارم مفید واقع شود.
شما باید پنج نکته را بدانید :
1- اول از همه باید خط زیر را به بخش <system.webgt; در فایل web.config سایت خودتان اضافه کنید:
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="fa-IR" uiCulture="fa-IR"/gt;
2- کافی است عبارت ResponseEncoding="utf-8" را به دایرکتیو <%@ Page %gt; در بالای هر صفحه ASP.NET خودتان اضافه کنید. هیچ دستور دیگری برای تنظیم کدپیج صفحات لازم نیست. مثلا اینطوری :
<%@ Page Language="vb" ContentType="text/html" ResponseEncoding="utf-8" CodeBehind="Books.aspx.vb" AutoEventWireup="false" Inherits="webapp1.BooksAdmin" %gt;
3- در قسمت HTML صفحه خودتان تگ متای زیر را در بخش <headgt; آن وارد کنید :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"gt;
4- توصیه میشود برای ورود اطلاعات به دیتابیس از روش ارسال پارامتر استفاده کنید. مثلا:
myCommand = New SqlCommand(Cmd, MyConnection)
myCommand.Parameters.Add("@Title", tTitle.Value)
که در اینجا cmd همان فرمان T-SQL شما و MyConnection شیء اتصال است. کافی است در داخل رشته cmd اینطوری بنویسید (مثلا اگر بخواهید insert کنید) :
INSERT INTO [Articles] ([Title],... ) VALUES (@Title,...)
و از فرمان زیر برای مقدار دهی به پارامتر استفاده کنید :
myCommand.Parameters.Add("@Title", tTitle.Value)
در اینصورت من توصیه میکنم برای وارد کردن اطلاعاتی که از input boxچند خطی گرفته اید ، روش زیر را استفاده کنید :
myCommand.Parameters.Add(New SqlParameter("@Text", SqlDbType.NText))
myCommand.Parameters("@Text").Value = tText.Value
نکته اش اینست که هنگام ورود اطلاعات به ADO.NET خبر میدهید که دارم اطلاعات یونیکد وارد میکنم. این کار را از طریق SqlDbType.NText انجام میدهیم.
5- باید هرکدام از فیلدهای یک جدول از دیتابیس که قرار است اطلاعات فارسی دریافت کند از نوع n باشد. مثلا nchar یا ntext یا nvarchar این نوع فیلدها مخصوص ذخیره کردن اطلاعات یونیکد هستند.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.