PDA

View Full Version : چگونگی نمایش کارکترهای فارسی در phpMyAdmin



arashmanteghi
پنج شنبه 26 آبان 1390, 20:38 عصر
سلام دوستان. من قبل از اینکه این تاپیک رو ایجاد کنم در همین مورد توی انجمن سرچ کردم و به خیلی نتایج رسیدم اما بهچیزه استانداردی بر نخوردم و خودم همچنان این مشکل رو دارم.
نمیخوام اون را ها دوباره یادآوری کنم. فقط میخوام یه سوال بپرم. اینکه وردپرس فارسی چه کار میکنه که کارکتر های فارسی خیلی راحت در phpMyAdmin نمایش داده میشه؟ کسی تاحالا به این موضوع اشاره نکرده بود.
البته مدیر محترم انجمن پیشنهاد داده بودند که با ویرایش فایل database_interface.lib.php مشکل رو حل کنیم، هرچند مشکل خیلی راحت حل شد اما روی وب سرور ها نمیشه این کار رو کرد و البته من وقتی این کار رو انجام داده بودم، نمایش متون فارسی در جداول وردپرس فارسی به هم خورد.
وردپرس برای فیلدهاش از utf8_general_ci استفاده کرده.
آیا کسی نمیدونه وردپرس فارسی چه راه حلی در این مورد به کار برده؟

pejman_view
پنج شنبه 26 آبان 1390, 20:57 عصر
سلام

من با CHARSET utf8_persian_ci کار کردم نمایش داد.

com.mohsen
پنج شنبه 03 آذر 1390, 04:43 صبح
با این کار مشکلت حل میشه

mysql_query('SET NAMES utf8;');
این کد را باید در قسمتی که به دیتابیس کانکت می شی بزاری

<?php
$db_server = mysql_connect($db_hostname, $db_username, $db_password);

if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());
mysql_query('SET NAMES utf8;');
?>

com.mohsen
پنج شنبه 03 آذر 1390, 04:45 صبح
نظر دوستان درباره استفاده از این کد چیه؟

mysql_query('SET NAMES utf8;');

arashmanteghi
چهارشنبه 09 آذر 1390, 21:16 عصر
من که نمیدونم جریان چیه که وقتی این کد رو میزارم ، phpMyAdmin درست که نمیشه هیچ، توی صفحه وب هم اون گارکتر های فارسی رو خرچنگ غورباقه نشون میده.

MMSHFE
پنج شنبه 10 آذر 1390, 10:33 صبح
دوست عزیز، مشکل کارکترهای فارسی توی دیتابیس بارها بررسی شده و راه حل قطعی اون هم ذکر شده که خلاصه اون میشه این مراحل:
1- فایلهای اسکریپت PHP خودتون رو با کدگذاری UTF-8 without BOM ذخیره کنید.
2- تگ زیر رو در قسمت head صفحه بگذارین:


<meta http-equiv="content-type" content="text/html; charset=utf-8"/>

3- بعد از اتصال به دیتابیس، دستور زیر رو اجرا کنید:


mysql_query('SET NAMES \'utf8\';');

4- دیتابیس رو با Collation از نوع utf8_bin یا utf8_general_ci یا utf8_persian_ci ذخیره کنید.
دقت کنید که با این کار، اطلاعاتی که از این به بعد توسط صفحاتی که مراحل 1 تا 3 توی اونها رعایت شده باشه، درست ذخیره میشه و به درستی هم نمایش داده میشه (برای نمایش درست هم باز باید شرایط ذکرشده رو در صفحات نمایش دهنده اطلاعات رعایت کنید). طبیعتاً اطلاعاتی که قبلاً با روشهای دیگه ذخیره شده، بصورت درست ظاهر نخواهد شد.
موفق باشید.

farnaz.saeedi
پنج شنبه 10 آذر 1390, 11:10 صبح
من وقتی اطلاعات و از اینترنت اکسپلورر میفرستم تو بانک بصورت علامت سوال ذخیره میشن وقتی ام از بانک میخونم بصورت مربع تو اینترنت اکسپلورر نمایش داده میشن
در حالای که تو بقیه مرورگرها بخوبی کار میکنه
کسی میدونه مشکل کجاست؟

MMSHFE
پنج شنبه 10 آذر 1390, 11:24 صبح
توی IE در برخی موارد برای اینکه تگهای خاصی مثل meta و... درست کار کنند، باید حتماً صفحه شما doctype داشته باشه. این تگها رو توی صفحه بگذارین ببینید مشکل رفع میشه یا نه؟


<!doctype html>
<meta charset="utf-8/>

تگ اول رو ابتدای صفحه و تگ دوم رو داخل تگ head قرار بدین. اگه تگ meta دیگری هم برای charset نوشتین، اون رو حذف کنید. امیدوارم مشکل برطرف بشه.
موفق باشید.

farnaz.saeedi
پنج شنبه 10 آذر 1390, 12:16 عصر
توی IE در برخی موارد برای اینکه تگهای خاصی مثل meta و... درست کار کنند، باید حتماً صفحه شما doctype داشته باشه. این تگها رو توی صفحه بگذارین ببینید مشکل رفع میشه یا نه؟


<!doctype html>
<meta charset="utf-8/>

تگ اول رو ابتدای صفحه و تگ دوم رو داخل تگ head قرار بدین. اگه تگ meta دیگری هم برای charset نوشتین، اون رو حذف کنید. امیدوارم مشکل برطرف بشه.
موفق باشید.
این کدهارو اضافه کردم اما متاسفانه مشکلم حل نشد
الان کدهام به اینصورته:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="fa-ir" />

ravand
پنج شنبه 10 آذر 1390, 13:09 عصر
شما اين كد رو در نظر بگير.

mysql_query("SET CHARACTER SET utf8",$dblink);
براي اينكه از اين كد استفاده كني روش زير رو انجام بده.

$servername="localhost";
$dbname="cms2";
$user="root";
$pass="";
$dblink=mysql_connect($servername,$user,$pass);
mysql_select_db($dbname,$dblink);
mysql_query("SET CHARACTER SET utf8",$dblink);
$dbresult=mysql_query("SELECT * FROM jadval limit 5",$dblink);

بايد هميشه اين خط قبل از ارسال كوئري باشه اگه بعد از قسمت كوئري نوشته بشه علامت سوال در صفحه چاپ ميشه.

نكته ي بعدي.
مشكل نوشته هاي بهم ريخته:
اگر اين خط رو قبل از ارسال كوئري و insert در قمت ارسال اطلاعات به mysql قرار نديم نوشته ها به صورت بهم ريخته نشون داده ميشه.

$handle=mysql_connect('localhost','root','');
mysql_query("SET CHARACTER SET utf8",$handle);
$query = "INSERT INTO jadval SET msg = '$msg',title='$title',date='$date'";
$result=mysql_query($query,$handle);
از اين كد زير هم در قسمت <head> استفاده كن كار تمومه :

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

farnaz.saeedi
پنج شنبه 10 آذر 1390, 13:55 عصر
شما اين كد رو در نظر بگير.

mysql_query("SET CHARACTER SET utf8",$dblink);
براي اينكه از اين كد استفاده كني روش زير رو انجام بده.

$servername="localhost";
$dbname="cms2";
$user="root";
$pass="";
$dblink=mysql_connect($servername,$user,$pass);
mysql_select_db($dbname,$dblink);
mysql_query("SET CHARACTER SET utf8",$dblink);
$dbresult=mysql_query("SELECT * FROM jadval limit 5",$dblink);

بايد هميشه اين خط قبل از ارسال كوئري باشه اگه بعد از قسمت كوئري نوشته بشه علامت سوال در صفحه چاپ ميشه.

نكته ي بعدي.
مشكل نوشته هاي بهم ريخته:
اگر اين خط رو قبل از ارسال كوئري و insert در قمت ارسال اطلاعات به mysql قرار نديم نوشته ها به صورت بهم ريخته نشون داده ميشه.

$handle=mysql_connect('localhost','root','');
mysql_query("SET CHARACTER SET utf8",$handle);
$query = "INSERT INTO jadval SET msg = '$msg',title='$title',date='$date'";
$result=mysql_query($query,$handle);
از اين كد زير هم در قسمت <head> استفاده كن كار تمومه :

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ببینید من الان فایل config ام به اینصورته:


<?php
$connect=mysql_connect('localhost','root','');
mysql_select_db('uni');
mysql_query("SET CHARACTER SET utf8",$connect);

این کدم تو قسمت head گذاشتم:


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

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

MMSHFE
پنج شنبه 10 آذر 1390, 16:05 عصر
یک بار به جای SET CHARACTER SET uf8 از SET NAMES utf8 استفاده کنید ببینید درست میشه یا نه؟ ضمناً توی IE از منوی View گزینه Encoding و بعد Auto-Select رو انتخاب کنید.

farnaz.saeedi
پنج شنبه 10 آذر 1390, 16:46 عصر
یک بار به جای SET CHARACTER SET uf8 از SET NAMES utf8 استفاده کنید ببینید درست میشه یا نه؟ ضمناً توی IE از منوی View گزینه Encoding و بعد Auto-Select رو انتخاب کنید.
متاسفانه هنوز مشکل داره
من با استفاده از آجاکس اطلاعات و تو بانک ذخیره میکنم.میتونه مشکل از این باشه؟

MMSHFE
پنج شنبه 10 آذر 1390, 17:35 عصر
ای بابا از اول میگفتین! توی اینترنت درمورد روش ارسال اطلاعات یونیکد با AJAX در مرورگر IE جستجو کنید. این مورد هم زیاد مورد بحث قرار گرفته و حقیقتش الآن دقیقاً تو ذهنم نیست ولی راه حل ساده ای داره. میگردم و اگه پیدا کردم، براتون اینجا میگذارم. موفق باشید.

farnaz.saeedi
پنج شنبه 10 آذر 1390, 18:12 عصر
ای بابا از اول میگفتین! توی اینترنت درمورد روش ارسال اطلاعات یونیکد با AJAX در مرورگر IE جستجو کنید. این مورد هم زیاد مورد بحث قرار گرفته و حقیقتش الآن دقیقاً تو ذهنم نیست ولی راه حل ساده ای داره. میگردم و اگه پیدا کردم، براتون اینجا میگذارم. موفق باشید.
راستش فک نمیکردم مشکل از آجاکس باشه.بهر حال مشکلم حل شد.ممنون از همه دوستان

هادی2020
جمعه 11 آذر 1390, 08:59 صبح
دوست عزیز، مشکل کارکترهای فارسی توی دیتابیس بارها بررسی شده و راه حل قطعی اون هم ذکر شده که خلاصه اون میشه این مراحل:
1- فایلهای اسکریپت PHP خودتون رو با کدگذاری UTF-8 without BOM ذخیره کنید.
2- تگ زیر رو در قسمت head صفحه بگذارین:


<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
3- بعد از اتصال به دیتابیس، دستور زیر رو اجرا کنید:


mysql_query('SET NAMES \'utf8\';');

4- دیتابیس رو با Collation از نوع utf8_bin یا utf8_general_ci یا utf8_persian_ci ذخیره کنید.
دقت کنید که با این کار، اطلاعاتی که از این به بعد توسط صفحاتی که مراحل 1 تا 3 توی اونها رعایت شده باشه، درست ذخیره میشه و به درستی هم نمایش داده میشه (برای نمایش درست هم باز باید شرایط ذکرشده رو در صفحات نمایش دهنده اطلاعات رعایت کنید). طبیعتاً اطلاعاتی که قبلاً با روشهای دیگه ذخیره شده، بصورت درست ظاهر نخواهد شد.
موفق باشید.
دوست عزیزمون مطالب رو به خوبی بیان کردن این جور مباحث قبلا خیلی زیاد بحث شده فقط نکته نهایی رو یه بار دیگه من اشاره میکنم.
موقع خواندن و نوشتن در بانک باید حتما از این کد استفاده کنید. یا علی


mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");

این لینکم دیدن داره تا پست تکراری نداشته باشیم (http://barnamenevis.org/showthread.php?66028-%D9%87%D8%B1-%DA%A9%D8%B3-%D9%85%DB%8C%D8%AE%D9%88%D8%A7%D9%87%D8%AF-%D8%A8%D8%A7-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D9%85%D8%B4%DA%A9%D9%84%DB%8C-%D9%86%D8%AF%D8%A7%D8%B4%D8%AA%D9%87-%D8%A8%D8%A7%D8%B4%D8%AF-%D9%84%D8%B7%D9%81%D8%A7-%D8%A7%DB%8C%D9%86%D8%AC%D8%A7-%D8%B1%D8%A7-%D9%85%D8%B7%D8%A7%D9%84%D8%B9%D9%87-%DA%A9%D9%86%D8%AF)

KIMIA1981
چهارشنبه 07 دی 1390, 08:46 صبح
ا

mysql_query("SET CHARACTER SET utf8");mysql_query("SET NAMES utf8");


گه بانکم Access باشه هم همین کد بالا رو باید بذارم؟؟