برای ذخیره صحیح پارسی در mysql معمولا collation جدول یا اون فیلدی که قراره پارسی درش ذخیره بشه رو روی utf-8 قرار میگیره مثل utf8_persian_ci یا utf8_default_collation قرار میدهیم
با این کار متون پارسی به درستی در بانک ذخیره میشه و در واکشی هم با متای زیر
کد:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
به درستی در صفحات نمایش داده میشه اما اگه وارد phpmyadmin بشین و یه نگاهی به فیلد های جدولتون بندازین میبینین که متون پارسی به صورت
علمی و پژوهشی
یا به قول معروف اجق وجق ذخیره شدن و به صورت مستقیم قابل خواندن نیستن برای رفع این مشکل باید 3 آپشن زیر در حالت utf-8 fhan
کد:
SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;
در هنگام ساخت کانکشن در PDO میتوانید از اپشن PDO::MYSQL_ATTR_INIT_COMMAND استفاده کنید که میتوانید یکی از مقادیر
کد:
SET NAMES 'utf8'
یا
SET CHARACTER SET 'utf8'
را داشته باشد تفاوت این 2 مقدار در این میباشد که
SET NAMES مقادری را به صورت
SET character_set_client = utf-8;
SET character_set_results = utf-8;
SET character_set_connection = utf-8;
و SET CHARACTER SET 'utf8' مقادیر را به صورت
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
مقدار دهی میکند که منظور از @@collation_database همان کلیشن تعریف شده برای فیلد یا جدول در دیتابیس میباشد
کد:
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html