ورود

View Full Version : فوری فوری UTF-8



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 این نوع فیلدها مخصوص ذخیره کردن اطلاعات یونی‌کد هستند.