رفع مشکل نمایش حروف فارسی در mysql و php

ارسال شده توسط: حسین درویشی Comments: 15

رفع مشکل نمایش حروف فارسی در mysql و php

یکی از مشکلاتِ رایج در php و mysql و همچنین صفحات وب ناسازگاری با زبان فارسی است. در حالیکه این ناسازگاری ناشی از عدم استفاده endoding استاندارد است. در این مقاله قصد دارم تا مشکل نمایش حروف فارسی در mysql و صفحه وب را رفع کنم.

حل نمایش حروف فارسی در mysql

قدم اول:

انتخاب encoding استاندارد UTF-8 برای صفحه وب است. در هر صفحه ای که این مشکل وجود داشته باشد. کد زیر را داخل تگ head قرار دهید.

<head> تگ هد
<meta charset="UTF-8">
</head>

بسیار خوب مشکل نمایش حروف فارسی در صفحات وب رو رفع کردیم. اما هنوز کار تمام نشده است و همین مشکل در mysql هنوز پابرجاست.


همچنین مطالعه کنید: Insert در php


قدم دوم: 

انتخاب همین utf-8 برای هر کدام از ستونهایی که قرار است حروف فارسی ثبت شود. برای چنین منظور، وارد phpmyadmin خود شوید.

جدول مورد نظر خود رو انتخاب کرده و سپس روی سربرگ Structure کلیک کنید. سپس ستون مورد نظر خود را انتخاب کنید.

رفع مشکل نمایش حروف فارسی در mysql

بعد از کلیک روی گزینه Change از ستون مورد نظر، وارد صفحه زیر خواهید شد که در قسمت Collation گزینه utf-8 رو انتخاب کرده و بر روی save کلیک کنید.


همچنین مطالعه کنید: تابع explode در php


ناگفتنی نماند که اگر اطلاعات حساسی دارید با این کار اطلاعات قبلی شما معنای خود را از دست خواهند داد.

رفع مشکل فارسی در mysql

کار هنوز تمام نشده است. و شما باید در کدهای 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();
}
برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]

Comments (15)

  • مهدی پاسخ

    با سلام آیا مشکلی نیست در یک سایت از mysqli و هم از pdo استفاده بشه؟؟؟و مورد اولی درست کاار کرد دستتون درد نکنه ولی پی دو او اعمال نمیشه و همچنان علامت سوال هستن

    17 بهمن 1400 at 5:05 ب.ظ
    • حسین درویشی پاسخ

      سلام
      از نظر کارایی مشکلی نداره ولی بهتره از PDO استفاده کنید

      17 بهمن 1400 at 9:25 ب.ظ
  • سینا پاسخ

    تو سایت های دیگه گشتم، چهار روش گفته بود، هیچکدوم اثر نکرد، هر چی همرو utf8 کردم،
    set names utf8 زدم تو sql
    متای هید هم درست بود
    آخر سر به لطف شما کار درست شد
    منظورم این کده>>
    mysqli_set_charset($conn,”utf8″);

    عالی بود سپاسگزارم
    البته تعجم از این بود که phpmyadmin هم که php و html هست، چرا اون فارسی نشون میده، گفتم شاید مشکل از کد php یا html من باشه، معلوم شد طبق کد شما، هم از php بوده هم mysql

    منظورم>>
    mysqli_set_charset($conn,”utf8″);
    هست

    بازم بسیار سپاسگزارم

    15 آذر 1400 at 5:22 ق.ظ
    • حسین درویشی پاسخ

      مرسی عزیز لطف دارید

      15 آذر 1400 at 8:44 ق.ظ
  • علی پاسخ

    مهندس مرسی ، فوق العاده اید ، ممنون

    1 آذر 1400 at 7:30 ب.ظ
    • حسین درویشی پاسخ

      سلام، لطف دارید

      1 آذر 1400 at 10:47 ب.ظ
  • هما پاسخ

    عااالیییی ممنون

    30 مهر 1400 at 9:35 ب.ظ
    • حسین درویشی پاسخ

      خواهش میکنم

      1 آبان 1400 at 3:18 ب.ظ
  • سید پاسخ

    درود بر شما… این جواب داد.

    8 شهریور 1400 at 12:44 ق.ظ
  • شاكري پاسخ

    عالي بود بسيار ممنون

    22 تیر 1400 at 12:34 ق.ظ
    • حسین درویشی پاسخ

      خواهش میکنم

      22 تیر 1400 at 2:38 ب.ظ
  • محمد پاسخ

    داداش من لاراول استفاده میکنم و این مشکلو دارم هرکاری ام میکنم درست نمیشه میتونی راهنمایی کنی؟

    6 خرداد 1400 at 12:38 ق.ظ
    • حسین درویشی پاسخ

      مراحل رو تست کردید؟

      6 خرداد 1400 at 12:03 ق.ظ
  • شایان پاسخ

    سلام
    یک دنیاااااااااااا از شما ممنونم بابت این آموزش سریع و مفید
    مغزم سوت کشید بس که آموزش های چرند و پرند سایت های دیگه رو کلی مرور کردم و به هیچ نتیجه ای نرسیدم
    ان شاالله همیشه سلامت و برقرار باشید
    یاعلی

    12 اردیبهشت 1399 at 1:35 ق.ظ
    • حسین درویشی پاسخ

      سپاس شما لطف دارین

      12 اردیبهشت 1399 at 10:31 ق.ظ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *