اگر درگیر کار با رشتهها در زبان پی.اچ.پی شده باشید، میدانید که بسیاری از توابع بر روی رشتههای فارسی کار نمیکنند...
به طور مثال تابع substring کاراکتری به شکل لوزی و علامت سؤال در داخل آن، چاپ میکند و یا تابع strlen عدد درستی از طول رشته نمیدهد.
در بحث پایگاه داده نیز اگر charset بانک را persian_ci_utf8 انتخاب کرده باشید، به صورت عادی نمیتوانید از آن خروجی بگیرید.
برای رفع مشکل توابع strlen و substr ابتدا قبل از کار با رشته، عبارت زیر را درج کنید:
mb_internal_encoding('UTF-8');
سپس به جای استفاده از تابع substr از تابع mb_substr استفاده کنید. مثال:
mb_substr("سلام به همه",0,3); // سلا
و به جای تابع strlen از تابع mb_strlen استفاده کنید. مثال:
mb_strlen("سلام"); // 4
اگر بعد از اتصال به بانک اطلاعاتی (MySQL)، حروف فارسی به درستی از بانک خوانده نشد، بعد از خط اتصال به بانک، کد زیر را قرار دهید:
mysql_set_charset('utf8');