PDA

View Full Version : سوال: مشکل با ذخیره متن فارسی در دیتابیس



sardarn
سه شنبه 22 مرداد 1392, 17:26 عصر
سلام
من یک مشکل دارم.من یک کد php نوشتم که بعد از زدن یک دکمه یک سری اطلاعات را در دیتابیس ذخیره می کنه.اگر دستی از phpmyadmin اطلاعات مورد نظر را در تیبل وارد کنم متن فارسی درست نشون داده می شه اما اگه کاربر بر روی دکه ثبت فرم کلیک کنه با متد post اطلاعات فرستاده می شود اگر کنار کوری اینسرت دستور echo بگذاریم متن فارسی درست نشون داده می شود اما وقتی در دیتابیس ذخیره می کنه به صورت ؟؟؟؟ ذخیره می شود.هنگام اتصال به دیتابیس از دستور

mysql_query("SET CHARACTER SET utf8;");
استفاده شده باز هم همین مشکل داریم.در ضمن وقتی به صورت دستی از phpmyadmin رکورد را وارد می کنم بعد با دستور select اونو چاپ می کنم متن فارسی درست نشون داده می شود.

مشکل کجاست؟

ممنون

javoooni
سه شنبه 22 مرداد 1392, 21:57 عصر
سلام دوست عزیز

باید همیشه یسری چیز هارو چک کنی
1- موقع ساخت دیتا بیس تنظیمات collation دیتا بیس رو روی utf8_general_ci یا utf8_persian_ci قرار بدی. 2- موقع ساخت تیبل هم تنظیمات collation رو روی یکی از این دو مورد قرار بده
3- هر فیلدی که توی تیبل قراره نوشته فارسی داخلش نوشته بشه رو هم باید طبق بالا روی یکی از این دو مورد بزاری
4- قبل از هر کاری روی دیتا بیس این دستور اجرا باید بشه

mysql_query('SET NAMES UTF8;');

این موارد پیش فرض دیتا بیس هست که توی مراحل بالاتر که از PDO استفاده بشه تنظیمات فرق داره (البته فقط مورد 4)

اما یه مورد دیگه هم هست که باید رعایت کنی و به HTML مربوط هست. استفاده از کد:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

این کد هم اگر نباشه توی HTML میتونه دیتا رو بهم بریزه ایشاالله که مشکلت حل میشه

sardarn
چهارشنبه 23 مرداد 1392, 08:56 صبح
سلام دوست عزیز

باید همیشه یسری چیز هارو چک کنی
1- موقع ساخت دیتا بیس تنظیمات collation دیتا بیس رو روی utf8_general_ci یا utf8_persian_ci قرار بدی. 2- موقع ساخت تیبل هم تنظیمات collation رو روی یکی از این دو مورد قرار بده
3- هر فیلدی که توی تیبل قراره نوشته فارسی داخلش نوشته بشه رو هم باید طبق بالا روی یکی از این دو مورد بزاری
4- قبل از هر کاری روی دیتا بیس این دستور اجرا باید بشه

mysql_query('SET NAMES UTF8;');

این موارد پیش فرض دیتا بیس هست که توی مراحل بالاتر که از PDO استفاده بشه تنظیمات فرق داره (البته فقط مورد 4)

اما یه مورد دیگه هم هست که باید رعایت کنی و به HTML مربوط هست. استفاده از کد:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

این کد هم اگر نباشه توی HTML میتونه دیتا رو بهم بریزه ایشاالله که مشکلت حل میشه

سلام
همه این ها رعایت شده

javoooni
پنج شنبه 24 مرداد 1392, 12:33 عصر
خود فایل های HTML و PHP رو در هنگام ذخیره کردن روی UTF-8 گذاشتید؟!

maryam.20
شنبه 04 آبان 1392, 21:03 عصر
سلام.
منم این مشکل رو دارم اما با کمی تفاوت...
ممنون میشم به این تاپیک سری بزنید :
http://barnamenevis.org/showthread.php?425403-%D9%85%D8%B4%DA%A9%D9%84-%D8%A8%D8%A7-%DA%A9%D8%A7%D8%B1%D8%A7%DA%A9%D8%AA%D8%B1%D9%87%D 8%A7-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7-%D8%A8%DB%8C%D8%B3-%D9%88-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%A7%D9%88%D9%86%D9%87%D8%A7&p=1903609#post1903609

aliebrahimi1900
شنبه 17 اسفند 1392, 09:19 صبح
قبل از رشته های فارسی توی دستورات اس کیو ال N بزارید

سعید صابری
شنبه 17 اسفند 1392, 14:58 عصر
قبل از رشته های فارسی توی دستورات اس کیو ال N بزارید

دستورات اس کیو ال نه mysql

aratoos
جمعه 12 اردیبهشت 1393, 01:41 صبح
منم این مشکل رو دارم
این دستوراتم گذاشتم ولی بازم درست نشد
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER_SET utf8');

saeed333
جمعه 25 مهر 1393, 22:36 عصر
سلام
من یک مشکل دارم.من یک کد php نوشتم که بعد از زدن یک دکمه یک سری اطلاعات را در دیتابیس ذخیره می کنه.اگر دستی از phpmyadmin اطلاعات مورد نظر را در تیبل وارد کنم متن فارسی درست نشون داده می شه اما اگه کاربر بر روی دکه ثبت فرم کلیک کنه با متد post اطلاعات فرستاده می شود اگر کنار کوری اینسرت دستور echo بگذاریم متن فارسی درست نشون داده می شود اما وقتی در دیتابیس ذخیره می کنه به صورت ؟؟؟؟ ذخیره می شود.هنگام اتصال به دیتابیس از دستور

mysql_query("SET CHARACTER SET utf8;");
استفاده شده باز هم همین مشکل داریم.در ضمن وقتی به صورت دستی از phpmyadmin رکورد را وارد می کنم بعد با دستور select اونو چاپ می کنم متن فارسی درست نشون داده می شود.

مشکل کجاست؟

ممنون


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

saeed333
جمعه 25 مهر 1393, 23:02 عصر
من هم این مشکل رو دارم که متن فارسی توی تیبل دیتابیسم درج میکنم و بعد توی فایل php به صورت سلام درمیاد
یا با اندروید یه متنی رو به فایل php ارسال میکنم اما توی دیتا بیس به صورت سلام درمیاد
ممنون میشم کمکم کنید