Gytyonline
مديريت كل انجمنها
پست: 899
عضو شده در: 14 شهریور 1384
محل سکونت: tehran
امتياز: 8184
|
عنوان: دیتابیسی فارسی در MySQL |
|
|
سلام
حتما شما هم تا به حال به این مشکل برخوردهاید که وقتی قصد ذخیره متنهای فارسی رو در دیتابیس تان داشتهاید مخصوصا MySQL موقع ذخیره سازی ذخیره میشود اما زمانی که به دیتابیس مراجعه میکنید مشاهده میکنید که تمامی کاراکترها به صورت ؟؟؟؟؟ یا کاراکترهای درهم و برهمی ذخیره شده است که اکثرا این مورد رو اگر صفحهی سایتتون رو با unicode و utf-8 ست کرده باشید موقع نمایش آن مشکلی ندارید اما راه حل چیه که نوشتهها در دیتابیس هم به صورت فارسی نمایش داده شوند.
در SQLServer با قرار دادن نوع داده فیلد به NVarchar و یا نوعهای دیگر ذخیره متن فارسی که با حرف N شروع شده است مثل NVarchar , Nchar و غیره ... این مشکل حل شده است و برنامه نویس راحت میباشد اما این مشکل را در MySQL چه طور حل کنیم؟؟
برای این کار موقع ساخت دیتابیس تان collation آن را بر روی utf8_general_ci قرار دهید یعنی
کد: |
collation : utf8_general_ci |
خوب حالا کافی هستش هرموقع که نیاز به اتصال به دیتابیس داشتید چه برای خواندن و چه نوشتن قبل از اولین کوئری کد زیر را وارد کنید:
کد: |
mysql_query("set names 'utf8'"); |
حتما و حتما دقت کنید که این کد رو قبل از اولین کوئری قرار بدهید یعنی موقع اتصال به دیتابیس خواهید داشت:
کد: |
$link = mysql_connect('localhost', 'root', '');
mysql_select_db( $db, $link ) or die ( "Couldn't open $db: ".mysql_error() );
mysql_query("set names 'utf8'"); |
و از این به بعد کاراکترهای شما در دیتابیس به صورت فارسی نمایش داده خواهد شد.
نکته بسیار مهم:
توجه کنید که در اینجا یک نکته کاملا مهم وجود دارد و آن این میباشد که با این کار هر کاراکتر به اندازه 2 کاراکتر در نظر گرفته خواهد شد و حجم پیدا خواهد کرد مثلا اگر شما قصد دارید یک متن 100 کاراکتری رو ذخیره کنید باید مقدار اندازه این فیلد رو 200 وارد کنید.
موفق باشید.
امین شفیعی; |
|