فرمهای php من با کاراکتر utf8 و دیتابیس و جدولهامم utf8-persian-ci هست اما موقع ارسال فارسی از فرم به دیتابیس به شکل ناخوانا در میاد یعنی علیرضا رو این شکلی مینویسه:
علیرضا
راه حلی هست برای درست کردنش؟
از تابع htmlentities استفاده کنید. آرگومان اول رشته مورد نظر، آرگومان دوم مقدار ثابت و ارگومان سوم نوع رمز گذاری (encoding) را مشخص می کند که مقدار پیش فرض آن از PHP 5.4 به بالاتر برابر UTF-8 می باشد.
آرگومان دوم یکی از سه مقدار زیر است:
ENT_COMPAT : کارکترهای single quote تبدیل نمی شوند.
ENT_QUOTES : کارکترهای single quote و double quote تبدیل می شوند.
ENT_NOQUOTES : کارکترهای single quote و double quote تبدیل نمی شوند.
می توانید از کد مشابه زیر استفاده کنید.
$value = 'علیرضا'; $value = htmlentities($value, ENT_NOQUOTES, 'UTF-8');
بسته به نیاز ارگومان دوم را مقداردهی کنید.
همچنین می توانید از تابع htmlspecialchars استفاده کنید که آرگومان های این تابع هم مشابه آرگومان های تابع htmlentities می باشد. تابع htmlspecialchars فقط کارکتر های خاص html را با کد معادل انها جایگزین میکند در حالیکه تابع htmlentities علاوه بر تبدیل کارکترهای خاص، کارکترهای unicode یا غیر ASCII رارمز گذاری می کند.
کارکترهای خاص عبارتند از :
کد معادل | کرکتر |
;amp& | & |
;quot& | " |
;#039& | ' |
;lt& | > |
;gt& | < |
امیدوارم که این پاسخ مشکل را برطرف کرده باشد.
سلام اگه با mysqli نوشته شده utf8 رو ست کن براش
mysqli_query($db, "SET NAMES UTF8");
به جمع هزاران کاربر اینستاگرامی روکسو بپیوندید.