یکشنبه , فروردین 6 1396
خانه / پی اچ پی / مشکل زبان فارسی در دیتابیس MYSQL و PHP

مشکل زبان فارسی در دیتابیس MYSQL و PHP

خب می خوام امروز بهتون یه نکته یا مشکل که چند بار واس خودم پیش اومده  بگم

این مشکل زمانی برای من پیش اومد که اطلاعات در دیتابیس به صورت فارسی ذخیره شده بود اما موقعی که ازشون گزارش می گرفتم ،به صورت علامت سوال (؟؟؟؟؟؟؟؟)بهم نشون می داد

خب برای مشاهده آموزش به ادامه مطلب برید

مشکل sql

خب  بریم سراغ آموزش، برای حل این مشکل بعد از دستور

$connection=mysql_connect ("$host", "$username", "$password") or die ('Failed to connect to database');

وقبل از دستور

mysql_select_db ("$db");

این دستورات رو وارد کنید

mysql_query("SET NAMES 'utf8'", $connection);
mysql_query("SET CHARACTER SET 'utf8'", $connection);
mysql_query("SET character_set_connection = 'utf8'", $connection);

و اینم کدها به صورت کامل:

$connection=mysql_connect ("$host", "$username", "$password") or die ('Failed to connect to database');
mysql_query("SET NAMES 'utf8'", $connection);
mysql_query("SET CHARACTER SET 'utf8'", $connection);
mysql_query("SET character_set_connection = 'utf8'", $connection);
mysql_select_db ("$db");

و یه نکته ای که باید اضافه کنم اینه که در تگ head ، فایل html اتون این رو هم حتما اضافه کنید

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

یک نکته:
برای برعکس این قضیه، یعنی اگر داده هاتون رو به دیتابیس ارسال میکنید و در جدول به صورت علامت سوال ثبت میشه باید دقت کنید Collation تک تک ردیف ها بر روی utf8_persian_ci قرار گرفته باشند و اگر قرار ندارن به تب structure جدول مورد نظرتون برید در اونجا دریف ها رو انتخاب کنید و change رو بزنید و Collation تک تک ردیف ها رو بر روی utf8_persian_ci قرار دهید

امیدوارم تونسته باشم مشکل خیلی دوستان رو حل کرده باشم

راستی اگه از این مطلب خوشتون اومده لطفا بهش امتیاز بدین

درباره ی مرتضی لطفی نژاد

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

مطلب پیشنهادی

گالری زیبای جی کوئری

امشب براتون یه گالری عکس زیبا آماده کردیم که با جی کوئری ساخته شده این …

36 دیدگاه

  1. خیلی خوب بود میشه فایل های CSS هم قرار بدی که با Action و Factoun باشند؟

  2. فایل های آماده یا قالب وب سایت های آماده با سی اس اس

  3. سلام
    منتظر مطالب بعدی هستم

  4. آقا عالی بود داداش
    فدائی داری

  5. سلام.
    ممنونم از آموزشی که گذاشتید.
    من با یونیکد کاراکترها مشکل دارم درحالیکه توی همه صفحاتم هم از charset=UTF-8″ استفاده کردم.
    Collation فیلدها هم اولش utf8_unicode_ci بود ولی وقتی خواستم ایمپورت کنم (من از اکسل دیتا ایمپورت کردم) به utf8_persian_ci تغییرش دادم.
    الان توی تیبل من یه تعدادی رکورد هست که وقت نمایش توی سایت درست نمایش داده میشن اما توی جدول کاراکترهاشون این شکلیه: ا پلاک Û±Û²Ûµ جدید
    بقیه رو که از اکسل ایمپورت کردم به صورت فارسی توی جدول نمایش داده میشن اما توی سایت همشون به شکل علامت سوالن.
    از این کدها هم که استفاده میکنم مشکل علامت سوال حل میشه اما کاراکترهایی که اجق وجق بودن (اینا منظورمه: ا Ù¾Ù„Ø§Ú ) همین شکلی یونیکد نشده نمایش داده میشن.

    ممنون میشم راهنماییم کنید ♥

  6. سلام
    میشه بگید این کدها رو باید کجا گذاشت

  7. آقا جان دست گلت درد نکنه دچار معضل شده بودم. یک دنیا ممنونم

  8. اون تگ Meta …
    این header برای php
    کلیشن فارسی
    و این چند رشته کد php مربوط به کانکشن
    همه تنظیم شدن و مشکل حل نشد .

    • مرتضی لطفی نژاد

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

  9. ممنون از راهنمایی خوب شما. ولی دستور mysql قدیمی است و الان mysqli کاربرد دارد پس برای نمایش فارسی صحیح کد زیر را می نویسیم:
    <?php
    $page_title = 'نمایش داده ها';
    include ('including files/includes/header.html');
    echo ' داده ها ‘;
    require_once (‘including files/db_connection.php’); // ارتباط با پایگاه
    // نوشتن پرسوجو
    $q = “SELECT * FROM users ORDER BY register_date ASC”;
    $r = @mysqli_query($dbc,”SET NAMES utf8″);
    $r = @mysqli_query($dbc,”SET CHARACTER SET utf8″);
    $r = @mysqli_query ($dbc, $q); // اجرای پرسوجو
    // شمارش تعداد دریافتی ها
    $num = mysqli_num_rows($r);
    در ضمن برای وارد کردن صحیح حروف فارسی با
    insert
    یک کاراکتر
    N
    قبل متغیرها بگذارید:
    $query = “INSERT INTO users (first_name, last_name, username, password, email, register_date) VALUES (N’$fn’, N’$ln’, N’$un’, SHA1(N’$pass’),’$e’, NOW() )”; // نوشتن درخواست و گذاشتن در متغیر

  10. مشکل من با این کار حل نشد لطفا راهنمایی کنید

  11. سلام . ممنون بابت اموزش .
    ممکن است تفاوت utf8 و utf8_persian_ci را توضیح بدهید ؟ متشکر .

    • مرتضی لطفی نژاد

      با سلام
      utf8 برای ساپورت کلمات فارسی استفاده میشه در کد نویسی های html و utf8_persian_ci برای mysql استفاده میشه و جای دیگه کاربردی نداره
      اگر سوال دیگه ای بود من در خدمتم

  12. فدائی داری دمت گرم مشکلم حل شد، خدا مشکلتونو حل کنه.

  13. سید محمد رضا

    سلام من مقادیر رو به صورت دستی که داخل mysql وارد می کنم بعد از خوندنش در php به صورت ???? هست …. ،،،،

    اما اگر با فایل php داخل جداول insert کنم به صورت عجیب و غریب ذخیره میشه ولی توی یک فایل پی اچ پی که بخوام این مقادیر عجیب و غریب رو بخونم به صورت درست برگردونده میشه و مشکلی نداره .

    مشکل از کجاست ؟ به چه شکل می تونم از روش اول یعنی وارد کردن دستی اطلاعات استفاده کنم و مقادیر رو درست بخونم آیا این متد هایی که قرار دادید مشکل من رو حل میکنه ؟

    • مرتضی لطفی نژاد

      با سلام
      اگر به صورت دستی وارد می کنید و به صورت علامت سوال ذخیره میشه پس Collation جدولتون بر روی utf8_persian_ci تنظیم نشده
      و باید اون رو بر collation ذکر شده تنظیم کنید

  14. اقا دمت گرم
    بابا دمت گرم خداوکیلی دمت گرم

  15. آقا واقعا ممنووون مشکلم حل شد

پاسخ دهید

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

به خانواده بزرگ فارس اسکریپت بپیوندید

با عضویت در سایت فارس اسکریپت به مطالب بروز کسب درآمد از طراحی صفحات وب و طراحی قالب دست خواهید یافت

Powered by themekiller.com