PDA

View Full Version : توسعه asp و مشکل فارسی (utf-8)



iran400
جمعه 18 شهریور 1384, 14:14 عصر
با سلام

یک سایت وب که با asp طراحی شده و بانک آن sql server می‌باشد و encoding آن utf-8 می‌باشد را با asp.net بازنویسی کرده‌ام.
تاحالا مشکل خاصی نبوده فقط مشکل اینجاست که اطلاعاتی را که از داخل بانک نمایش می‌دهد مشکل دارند و با اینکه encoding صفحه utf-8 می‌باشد و داخل فایل web.config هم خط زیر را اضافه کرده‌ام ولی هنوز مشکل مرتفع نشده.
وقتی هم که اطلاعات فارسی وارد بانک می‌کنم بصورت علامت سوال! ذخیره می‌شود.

ممنون می‌شوم راهنمایی فرمایید.

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

kochol
جمعه 18 شهریور 1384, 20:44 عصر
سلام
در همین بخش در قسمت اطلاعیه ها یک پست وجود دارد که همه این ها را توضیح داده است

marmar
شنبه 19 شهریور 1384, 10:28 صبح
سلام
دوستان منم همین مشکلرو دارم
اما اون جایی که آقای kocholگفته بودچیزی ندیدم می شه بیشتر راهنمایی کنید؟

با تشکر

kochol
شنبه 19 شهریور 1384, 11:04 صبح
سلام
من سر زدم به اون پست سر زدم ولی متاسفانه دیدم فایل ضمیمه آن پاک شده
خوشبختانه من اونو داشتم پس دوباره براتون آپلود کردم.

marmar
شنبه 19 شهریور 1384, 12:56 عصر
سلام
خیلی مرسی از کمکتون

marmar
یک شنبه 20 شهریور 1384, 14:21 عصر
سلام
ببخشید اما تو اون لینک که گذاشته بودید آقای kocholمن چند تا سوال برام پیش اومد

اول اینکه: COLLATE Arabic_CI_AS NOT NULL راگفتید در تعریف sqlتغیر بدم نمی دونم کجا باید برم

دوم اینکه:گفتید در هر form،که داریم charset را با unicod ست کنم چجوری؟

با تشکر از راهنمایی هاتون

kochol
یک شنبه 20 شهریور 1384, 15:58 عصر
سلام
جواب سوال اولتان را من نمی دانم ولی در مورد سوال دوم باید در propertis مربوط به document
charset را به unicode تغییر دهید و برای اینکه با back و next صفحه به هم نخورد 1200 نوشته شده در جلوی codepage را پاک کنید.

marmar
دوشنبه 21 شهریور 1384, 09:49 صبح
سلام
در مورد saveas , withsigمن متوجه نشدم چی کار باید بکنم آخه من هیچ مثلثی روش نمی بینم؟

با تشکر از توجهتون

kochol
دوشنبه 21 شهریور 1384, 12:37 عصر
سلام مثلث کوچکی کنار دکمه save وجود دارد رو خود دکمه هست و روش به سمت پایین.

iran400
چهارشنبه 23 شهریور 1384, 20:08 عصر
سلام

آقا بنده جواب اصلی را پیدا کردم

در اولین فرصت توضیح مناسب و کاملی می‌دهم

یا علی

iran400
جمعه 25 شهریور 1384, 19:16 عصر
بسمه‌تعالی

خوب اول در مورد دیتابیس sql رفع ابهام کنم.
اول اینکه توی هر هاستی که ماکروسافتی باشه به راحتی می‌شه از زبان فارسی استفاده کرد و ربطی به تنظیمات سرور نداره!

دوم اینکه در موقع ساخت تیبل دیتابیس Collation آن را تغییر ندهید.
یادتون باشه تو موقع ساخت تیبل عبارت COLLATE و زبان مربوطه جولی آن نباشد.

به مثال زیر نگاه کنید:
CREATE TABLE [dbo].[part] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Name] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[EnName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[DefaultPage] [smallint] NULL ,
) ON [PRIMARY]
باید به صورت زیر تبدیل شود:
CREATE TABLE [dbo].[part] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Name] [nvarchar] (50) NULL ,
[EnName] [nvarchar] (50) NULL ,
[DefaultPage] [smallint] NULL ,
) ON [PRIMARY]

خوب حالا بیاییم سر اصل مطلب.

سوال این بود که چطور می‌توان اطلاعاتی که با asp در داخل دیتابیس sql و آن هم بصورت utf-8 ذخیره شده در دات‌نت و مخصوصاً asp.net بتوانیم مشاهده کنیم.

جواب:‌ از فانکشن زیر استفاده کنید؛ این فانکشن تبدیل فرمت را انجام می‌دهد و اطلاعات را فارسی نشان می‌دهد. جالب اینجاست که برای تبدیل به فرمت فارسی باید از کدپیچ Windows-1254 که در حقیقت برای ترکیه است استفاده کنیم.

public static string unicode(string src)
{
Encoding iso = Encoding.GetEncoding("Windows-1254");
Encoding unicode = Encoding.UTF8;
byte[] isoBytes = iso.GetBytes(src);
return unicode.GetString(isoBytes);
}

یا علی

صابر
یک شنبه 06 فروردین 1385, 03:31 صبح
سلام
...
اول اینکه: COLLATE Arabic_CI_AS NOT NULL راگفتید در تعریف sqlتغیر بدم نمی دونم کجا باید برم
..

سلام،
برای این کار من قبلاً یه چیزی نوشتم شاید به دردتون بخوره:

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