رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
علامت سوال ؟ به جای حروف فارسی در هنگام خواندن یا نوشتن در دیتابیس
#1
برای SQL

وقتی از حالت ویزارد (wizard) برای نوشتن در دیتابیس از gridview یا detailsview از طریق حالت insertmode استفاده می کنم مشکلی ایجاد نمیشه ولی وقتی در codeنویسی از دستورات asp.net و sql برای نوشتن (درج یا آپدیت {به روز رسانی}) استفاده می کنم به جای حروف فارسی، علامت سوال در دیتابیس درج میشه و قاعدتا همون علامت سوالها هم در برنامه نمایش داده میشه …
راه حلی که برای خودم پیدا کردم به صورت مختصر به شرح ذیل می باشد:
تمام فیلدهایی (fields) که به صورت رشته ای (string) که در اون از حروف فارسی استفاده کردم رو به nvarchar تغییر دادم و در هنگام که در کد برنامه دستور sql رو خواستم بنویسم به جای مثلا
insert into myphone (fname, lname) values (‘”+TextBox1.Text+”‘, ‘”+TextBox2.Text+”‘)
دستور
insert into myphone (fname, lname) values (N’”+TextBox1.Text+”‘, N’”+TextBox2.Text+”‘)
رو قرار دادم و تونستم همون حروف فارسی رو در جدول (table) دیتابیس (بانک اطلاعاتی) قرار بدم و به تبع اون حروف درست رو تونستم نمایش بدم.
حرف N رو فقط در فیلدهایی قبل از ‘ قرار بدید که از نوع nvarchar باشند نه هر فیلدی که از ‘ استفاده میکنه.

برای MYSQL


دوستی همین مشکل رو برای Mysql داشت البته با کمی تفاوت … مشکل اینجا بود که ایشون همه چیز رو توی Mysql درست طراحی کرده بود ولی هنگام نمایش آن با مشکل رو برو شده بود.
به طور دقیقتر در تعریف table در قسمت charset اونو روی utf-8 گذاشته بود و در قسمت collation مقدار اون روی utf8_persian_ci بوده و type فیلد رشته ای اون روی varchar… و فایل Php هم با utf-8 ذخیره شده بود و در هدر اون هم نوع کاراکترها utf-8 بوده … ولی قصه ادامه داشت …
کلی دنبال این موضوع رو گرفتم تا فهمیدم مشکل چیه ..!
به طور خیلی خلاصه … میتونم اینو بنویسم:
$link=mysql_connect(localhost,$username,$password);
mysql_set_charset(‘utf8′,$link)
این کار مشکل رو حل کرد و همه چیز درست نشون داده شد…..

منبع
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان