رفع مشکل نمایش حروف فارسی در mysql و php
یکی از مشکلاتِ رایج در php و mysql و همچنین صفحات وب ناسازگاری با زبان فارسی است. در حالیکه این ناسازگاری ناشی از عدم استفاده endoding استاندارد است. در این مقاله قصد دارم تا مشکل نمایش حروف فارسی در mysql و صفحه وب را رفع کنم.
حل نمایش حروف فارسی در mysql
قدم اول:
انتخاب encoding استاندارد UTF-8 برای صفحه وب است. در هر صفحه ای که این مشکل وجود داشته باشد. کد زیر را داخل تگ head قرار دهید.
<head> تگ هد <meta charset="UTF-8"> </head>
بسیار خوب مشکل نمایش حروف فارسی در صفحات وب رو رفع کردیم. اما هنوز کار تمام نشده است و همین مشکل در mysql هنوز پابرجاست.
همچنین مطالعه کنید: Insert در php
قدم دوم:
انتخاب همین utf-8 برای هر کدام از ستونهایی که قرار است حروف فارسی ثبت شود. برای چنین منظور، وارد phpmyadmin خود شوید.
جدول مورد نظر خود رو انتخاب کرده و سپس روی سربرگ Structure کلیک کنید. سپس ستون مورد نظر خود را انتخاب کنید.
بعد از کلیک روی گزینه Change از ستون مورد نظر، وارد صفحه زیر خواهید شد که در قسمت Collation گزینه utf-8 رو انتخاب کرده و بر روی save کلیک کنید.
همچنین مطالعه کنید: تابع explode در php
ناگفتنی نماند که اگر اطلاعات حساسی دارید با این کار اطلاعات قبلی شما معنای خود را از دست خواهند داد.
کار هنوز تمام نشده است. و شما باید در کدهای php هم همین کار را انجام دهید. برای چنین منظوری در فایل Config.php پروژه خود کد زیر را اضافه کنید.
mysqli_set_charset($conn,"utf8");
نحوه اضافه کردن این تکه کد بشکل زیر است:
$ServerName="localhost";
$UserName="root";
$password="";
$dbname="db_name";
//connection
$conn=new MySQLi($ServerName,$UserName,$password,$dbname);
if($conn->connect_error){
die("Connection failed: " . $conn->connect_error);
}
//تکه کد مورد نظر ما:
mysqli_set_charset($conn,"utf8");
اگر از PDO استفاده می کنید
اگر هم بجای mysql از PDO استفاده می کنید از کانکشن زیر استفاده کنید:
<?php
try {
$db = new PDO('mysql:host=localhost;dbname=database_name;charset=utf8mb4', 'username', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
echo "Connection failed : ". $e->getMessage();
}
Comments (15)
با سلام آیا مشکلی نیست در یک سایت از mysqli و هم از pdo استفاده بشه؟؟؟و مورد اولی درست کاار کرد دستتون درد نکنه ولی پی دو او اعمال نمیشه و همچنان علامت سوال هستن
سلام
از نظر کارایی مشکلی نداره ولی بهتره از PDO استفاده کنید
تو سایت های دیگه گشتم، چهار روش گفته بود، هیچکدوم اثر نکرد، هر چی همرو utf8 کردم،
set names utf8 زدم تو sql
متای هید هم درست بود
آخر سر به لطف شما کار درست شد
منظورم این کده>>
mysqli_set_charset($conn,”utf8″);
عالی بود سپاسگزارم
البته تعجم از این بود که phpmyadmin هم که php و html هست، چرا اون فارسی نشون میده، گفتم شاید مشکل از کد php یا html من باشه، معلوم شد طبق کد شما، هم از php بوده هم mysql
منظورم>>
mysqli_set_charset($conn,”utf8″);
هست
بازم بسیار سپاسگزارم
مرسی عزیز لطف دارید
مهندس مرسی ، فوق العاده اید ، ممنون
سلام، لطف دارید
عااالیییی ممنون
خواهش میکنم
درود بر شما… این جواب داد.
عالي بود بسيار ممنون
خواهش میکنم
داداش من لاراول استفاده میکنم و این مشکلو دارم هرکاری ام میکنم درست نمیشه میتونی راهنمایی کنی؟
مراحل رو تست کردید؟
سلام
یک دنیاااااااااااا از شما ممنونم بابت این آموزش سریع و مفید
مغزم سوت کشید بس که آموزش های چرند و پرند سایت های دیگه رو کلی مرور کردم و به هیچ نتیجه ای نرسیدم
ان شاالله همیشه سلامت و برقرار باشید
یاعلی
سپاس شما لطف دارین