ورود

نسخه کامل مشاهده نسخه کامل : مشکل در نمایش اطلاعات فارسی موجود در دیتابیس اکسس در وب فرم



aslani60
19-11-2012, 09:48
با سلام خدمت همه دوستان
من در برنامه ای مجبورم تا از یک فایل اکسس اطلاعات را بخونم وقتی برنامه را روی سیستم خودم اجرا می کنم همه چی درسته و اطلاعات فارسی هم درست نمایش داده می شه. ولی بر روی وب ،تمامی اطلاعات فارسی موجود در دیتابیس اکسس بصورت "
ÊÝÇæÊ ÊØÈíÞ
" نمایش داده می شه در حالی در قسمتهای دیگه برنامه که از اس کیو ال استفاده میکنم مشکلی با فارسی ندارم ...

لطفا راهنمایی کنید...

_H2_
20-11-2012, 12:10
سلام
احتمالاً مشکلتان از کدینگ صفحه تان است...

الف) باید فایل aspx تان را با فرمت UTF-8 ذخیره کنید:
VS>File>Advanced Save Options>Encoding:UTF8-65001
Notepad>File>Save As>Encoding:UTF8

ب) سپس تگ متای زیر را به بخش head صفحه اضافه کنید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ج) در SQLServer هم باید دقت کنید که نوع فیلدهایتان بجای char,varchar,text نوع nchar,nvarchar,ntext باشد.

aslani60
26-11-2012, 08:37
با تشکر از جواب شما، در advance save option من بطور پیش فرض روی ...65001 unicode(utf-8 with signature) - codepage
تنظیم می باشد .. در ضمن من از source page استفاده می کنم برای همین من تگ <meta ...> را فقط در این صفحه اضافه کردم ولی این مشکل حل نشد...
این مشکل فقط و فقط در این قسمت برنامه برام پیش اومده در تمام برنامه مه از اس کیو ال استفاده می کنم چنین مشکلی ندارم و همچنین وقتی روی سیستم خودم استفاده می کنم هیچ مشکلی نیست ولی وقتی فایل اکسس را آپلود می کنم و ازش می خونم این مشکل پیش می یاد

_H2_
26-11-2012, 15:15
سلام

... در ضمن من از source page استفاده می کنم ...
اگر منظورتان MasterPage است مطمئن شوید که تنظیم UTF8 را هم در MasterPage و هم ContentPage انجام داده اید.

رشته اتصال تان هم که حتماً چیزی شبیه این ها است؟!

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

چگونه اطلاعات را از دیتابیس واکشی کرده اید؟ از DataSet استفاده کردید یا ... ؟

گرچه بعید میدانم مشکل تان از این چیزها باشد ولی ترجیحاً تگ زیر را هم به web.config اضافه کنید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اطلاعات داخل دیتابیس Access چطور وارد آن شده اند؟

پیش فرض محکم دیگری برای مشکلتان ندارم ولی قطعاً چیز مهمی نیست و قابل حل است ، در صورت تمایل بخشی از پروزه تان را که مربوط به این مشکل است آپلود کنید تا بتوان دقیق بررسی کرد و مشکل را یافت.
موفق باشید.

aslani60
28-11-2012, 08:21
سلام

دقیقا... فکر می کنم مشکل خاصی نیست ولی فعلا خیلی برای من مشکل زا شده. این فایل اکسس توسط یه برنامه جانبی از یه برنامه تحت داس ساخته می شه و این فایل ظاهرا اصلا مشکلی نداره .همونطور که گفتم وقتی از این فایل روی سیستم خودم استفاده می کنم مشکلی نیست ....
رشته اتصال من هم دقیقا بصورت زیر است :
("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Server.MapPath("~/AccessDB/ filename.mdb


و مشکلی هم نیست کامل به دیتابیس وصل می شه و اطلاعات را هم می خونه ولی نمایشش مشکل داره...
درضمن چون اطلاعات موجود در این فایل سازمانیه نمی تونم آپلودش کنم. ولی اگه فرصت دارید تا این فایل اکسس رابررسی کنید براتون ایمیل کنم...

_H2_
28-11-2012, 22:44
سلام

... برنامه جانبی از یه برنامه تحت داس ساخته می شه ...
پس مشکل همین است.
برنامه های تحت داس هیچ کدام یونیکدی عمل نمیکنند، اطلاعات شما احتمالاً در قالب ASCII و کدپیج قدیمی 1256 ذخیره شده است.
و در رایانه خودتان درست عمل میکند چون پیش فرض زبان های غیر یونیکدی (Language for non-Unicode programs) در کنترل پنل رایانه شما تنظیم شده است.
باید یا کل دیتابیس را یکجا یا هر فیلد را جداگانه و قبل از نمایش به UTF8 تبدیل کنید.

اگر کد قطعی برای حل مشکل میخواهید باید نمونه کوچکی از دیتابیس با اطلاعات مشکلدار را داشته باشم ولی لازم نیست این دیتابیس کامل و پر باشد، کپی از دیتابیس اصلی تهیه کنید و تمام اطلاعات داخل آن بجز یک یا دو سطر را پاک کنید و سپس آپلود کنید.

aslani60
29-11-2012, 12:19
با تشکر از شما

نمونه فایل اکسسی که باش کار می کنم ::

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

در ضمن پسورد فایل aslani است.

ممنون می شم بررسیش کنید.

_H2_
30-11-2012, 00:07
سلام
کد زیر را برای تبدیل متن هایتان استفاده کنید.
یا با کدی یکبار کل دیتابیس و تک تک فیلدها را تبدیل و در دیتابیس جدید ذخیره کنید و یا قبل از استفاده از هر مقدار string آن را با تابع زیر تبدیل کنید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

aslani60
01-12-2012, 07:51
خیلی خیلی ممنون که وقت گذاشتین.فقط آخرین سوال........
اگه بخوام کل اطلاعات دیتابیس اکسس را ببرم اس کیو ال باید از چه کدی باید استفاده کنم؟؟
درواقع کل برنامه من هم به این صورت بود که اطلاعات را از اکسس با دستور bulkcopy به دیتابیس sql کپی می کردم و بعد از اون با sql کار می کردم. ولی بعد از بروز این مشکل اطلاعاتی که به sql کپی می شدن همین مشکل را داشتن.آیا کد خاصی هست که قبل از bulkcopy بشه همه اطلاعات را تبدیل کرد یا اینکه باید تک تک سطرها و اطلاعات را پیمایش و تبدیل کرد؟؟؟؟

_H2_
03-12-2012, 12:29
سلام

اگه بخوام کل اطلاعات دیتابیس اکسس را ببرم اس کیو ال باید از چه کدی باید استفاده کنم؟؟
با جمیع شرایط ، روش تبدیل یک مرتبه کل اطلاعات به حداقل سه دلایل مختلف بهتر است.
کار مشکلی هم نیست، یک کد کوچک با یک حلقه while کافی خواهد بود...
کافیست دیتابیس منبع را با یک DataReader در حلقه while بخوانید و و پس از تصحیح فیلدهای متنی (با کدفوق) اطلاعات را در یک command در مقصد درج کنید.

در واقع شما نیاز به یک SELECT روی منبع و یک INSERT روی مقصد دارید...
برای نمونه کد کار با datareader و command هم میتوانید نگاهی به پست زیر بیاندازید:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


البته از bulkcopy هم میتوانید استفاده کنید، کافی است حلقه for را روی dataset اعمال کنید.
موفق باشید.

aslani60
04-12-2012, 11:15
واقعا ممنون مشکلم حل شد:20: