View Full Version : مشکل ذخیره داده فارسی mysql
alirezahf
یک شنبه 13 مهر 1393, 19:17 عصر
من از asp.net و mysql استفاده می کنم ولی وقتی حروف فارسی داخل دیتابیس میریزم بصورت ؟؟؟؟؟ به تعداد حروف عبارت فارسیم توی دیتابیس میادش
collation جدولهامم همه utf8-general یا utf8-persian و داخل صفحه م هم حروف فارسی هست و مشکلی نداره نمی دونم مشکل کجاست
انگار چیزایی ک می نویسم به utf8 تبدیل نمیشن.توی php وقتی حروف فارسی اینسرت میکردم تو دیتابیسش حروف ناخوانا میومد و وقتیم واکشیش میکردم درست میشد ولی اینجا فقط ؟؟؟ میادش
ahmad156
یک شنبه 13 مهر 1393, 19:37 عصر
دوست عزیز به احتمال زیاد Collation پیش فرض شما چیزی به غیر از این دو مورد بوده و شما بعداً Collation رو عوض کردین.
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
alirezahf
یک شنبه 13 مهر 1393, 20:13 عصر
ممنون ولی هیچ تاثیری نداره حتی جدول رو هم ک از اول می سازم بازم کارساز نیست.
راهی برای کانورت فارسی به utf بالعکس هستش؟
برای مثال علیرضا میشه علیرضا
ahmad156
یک شنبه 13 مهر 1393, 20:21 عصر
Collation ستون هاتون رو هم تغییر بدین.
alirezahf
یک شنبه 13 مهر 1393, 20:23 عصر
کل دیتابیس و جدول و ستونها و .... همگی utf8 هستند
ahmad156
یک شنبه 13 مهر 1393, 20:33 عصر
utf8_unicode_ci نه utf-8 !!!
در هر صورت تنظیمات MySql تون مشکل داره و بهتره سوالتون رو تو تالار MySql مطرح کنین و به نظر من شما Collation پیش فرض MySql رو زمان نصب باید تنظیم میکردین.در هر صورت آخرین راه حلتون قبل از مقادیر تون در کوئری N بزارین مثلاً:
N"کریمی"
Mousavmousab
یک شنبه 13 مهر 1393, 22:33 عصر
سلام
به طور کلی دو حالت ممکن است رخ دهد.
اول اینکه داده شما به صورت غیر یونیکد یا ؟؟؟؟ در دیتابیس ذخخیره شده است و الان اگر Collation را تغییر دهید باز داده های قبلی درست نخواهد شد و داده های جدید به شکل خوانا و درست نمایش داده خواهد شد. (داده هایی که بعد از اعمال تغییرات درست برای Collation که انجام داده اید)
حالت بعدی اینکه : شما الان Collation را تغییر دادین و داده هم به صورت درست در بانک ذخیره می شود ولی باز به صورت ؟؟؟؟ چاپ می شود ، باید utf فرم PHP مربوطه را به 8 تغییر دهید.
با تگ meta و قرار دادن utf=8 مشکل شما حل می شود.
موفق باشید.
alirezahf
یک شنبه 13 مهر 1393, 23:38 عصر
سلام
داده های قبلی درکار نیست همه رو پاک میکنم مدام.ولی مشکل اینجاست که کلن بصورت ؟؟؟ توی دیتابیس دخیره میشن.
از تگ متا هم استفاده کردم تاثیری نداره در ضمن پروژه من ASP هستش وگرنه تو PHP چنین مشکلی نخوردم.
بنظرم مشکل به اینکد کردن اطلاعات با asp مربوطه.یه کدی نیست متن تکست باکس رو به فرم داخل تصویری انکد کنم و برگشتشم از دیتابیس دیکدش کنم؟؟؟؟!:متفکر:
124261
ahmad156
یک شنبه 13 مهر 1393, 23:54 عصر
شما از عبارت N قبل از مقادیرتون استفاده کردین؟
توی ConnectionString تون CharSet رو تنطیم کنین ببینین جواب نمیده
"Server=DB_SERVER_NAME;Database=DBNAME;Uid=YOUR_ID; Pwd=YOUR_PASSWORD;Charset=utf8;"
alirezahf
دوشنبه 14 مهر 1393, 00:09 صبح
آقا کارت درسته دقیقا مشکل همون بود و حل شد.:تشویق:
charset=utf8;
اینو من داخل command میذاشتمش نمشد.
واقعا متشکرم
public static string GetConnectionString() {
string databasename = "sabanewsdb";
string username = "root";
string password = "";
string connStr = String.Format("server={0};user id={1}; password={2};" +
"database="+databasename+"; pooling=false", "localhost",
""+username+"", ""+password+";Charset=utf8;");
return connStr;
}
ok.baby
یک شنبه 31 شهریور 1398, 12:16 عصر
شما از عبارت N قبل از مقادیرتون استفاده کردین؟
توی ConnectionString تون CharSet رو تنطیم کنین ببینین جواب نمیده
"Server=DB_SERVER_NAME;Database=DBNAME;Uid=YOUR_ID; Pwd=YOUR_PASSWORD;Charset=utf8;"
خدا خیرت بده، هر کاری می کردم علامت سوال درست نمیشد.
توی php بعد از کانکشن ، این کد رو اضافه کردم درست شد:
mysqli_set_charset($conn,"utf8");
alimokhtari2000
یک شنبه 12 آبان 1398, 19:37 عصر
شما از عبارت N قبل از مقادیرتون استفاده کردین؟
توی ConnectionString تون CharSet رو تنطیم کنین ببینین جواب نمیده
"Server=DB_SERVER_NAME;Database=DBNAME;Uid=YOUR_ID; Pwd=YOUR_PASSWORD;Charset=utf8;"
دمت گرم هر سایتی رو که میگشتم فقط برای php توی لیست بود:تشویق:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.