PDA

View Full Version : نشان دادن علامت سوال به جای حروف فارسی



mhd.ghavam
یک شنبه 28 شهریور 1389, 07:27 صبح
سلام دوستان عزیزم من می خوام از یک دیتابیس اطلاعات را بخوانم و نشان بدهم اما هر کاری می کنم اطلاعات فارسی رو به صورت علامت سوآل نشون میده نمی دونم چه کار باید کرد البته collation هم utf8_general_ci هست و حتی اون فیلدی که می خواستم بخونم رو به utf8_persian_ci تبدیل کردم بازم نشد نمی دونم چه کار باید بکنم لطفا کمکم کنید در ضمن کد رو هم می ذارم تا بینید



<!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" />
<title>Untitled Document</title>
</head>

<body>
<?php
include('config.php');

$sql = "select * from smf_messages";
$result = mysql_query($sql,$con) ;

while ($row = mysql_fetch_assoc($result) or die ("fetch nashod ::: ".mysql_error()))
{
echo $row['subject']."<br/>";
}
mysql_close($con);
?>
</body>
</html>

Mohammd hosein
یک شنبه 28 شهریور 1389, 09:15 صبح
سلام
قبل از اجرا کردن query
بنویس
dbh1->exec("SET NAMES utf8");

mhd.ghavam
یک شنبه 28 شهریور 1389, 09:46 صبح
سلام
قبل از اجرا کردن query
بنویس
dbh1->exec("SET NAMES utf8");

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



dbh1->exec("SET NAMES utf8");

Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/hamid/public_html/forum/alaki.php on line 16






$result->exec("SET NAMES utf8");

Fatal error: Call to a member function exec() on a non-object in /home/hamid/public_html/forum/alaki.php on line 15

Hell Lord
یک شنبه 28 شهریور 1389, 09:56 صبح
تیبل های دیتا بیس را روی utf8-bin قرار بدهید.
آن دستوری هم که دوستمان گفتند باید به این صورت باشد :

$sql = "SET NAMES utf8";
$result = mysql_query($sql,$con) ;

mhd.ghavam
یک شنبه 28 شهریور 1389, 10:23 صبح
تیبل های دیتا بیس را روی utf8-bin قرار بدهید.
آن دستوری هم که دوستمان گفتند باید به این صورت باشد :

$sql = "SET NAMES utf8";
$result = mysql_query($sql,$con) ;



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

Hell Lord
یک شنبه 28 شهریور 1389, 10:35 صبح
شما اگر در زمان ساخت دیتا بیس خود از کدینگِ utf-8 استفاده کنید، این مشکلات به وجود نخواهد آمد.

--
این دستور باعث میشود زمانی که مقادیری که توسط کدینگ ASCII مشکلاتی برایشان به وجود میاید بخواهند وارد دیتا بیس شوند، با فرمت utf-8 ذخیره شوند.

این قسمت سوالتان را ندیدم :

البته collation هم utf8_general_ci
خب پس از همان کد استفاده کنید، کدینگ را من هر وقت روی utf8_bin میگذارم بدون استفاده از آن دستورات همه چیز درست کار میکند.
البته قبل از اطلاعاتی که قرار است وارد جدول شود هم اگر N بگذارید فکر کنم درست عمل کند.

mhd.ghavam
یک شنبه 28 شهریور 1389, 11:10 صبح
شما اگر در زمان ساخت دیتا بیس خود از کدینگِ utf-8 استفاده کنید، این مشکلات به وجود نخواهد آمد.

--
این دستور باعث میشود زمانی که مقادیری که توسط کدینگ ASCII مشکلاتی برایشان به وجود میاید بخواهند وارد دیتا بیس شوند، با فرمت utf-8 ذخیره شوند.

این قسمت سوالتان را ندیدم :

خب پس از همان کد استفاده کنید، کدینگ را من هر وقت روی utf8_bin میگذارم بدون استفاده از آن دستورات همه چیز درست کار میکند.
البته قبل از اطلاعاتی که قرار است وارد جدول شود هم اگر N بگذارید فکر کنم درست عمل کند.

سلام وست عزیز خوب من از utf8_bin هم استفاده کردم اما نشد . من یک فرومی دارم که می خوام براش یک RSS بنویسم و من نمی تونم که دوباره دیتابیس بنویسم و از اول همه اطلاعات رو وارد کنم؟ من می خوام این اطلاعات رو دز RSS استفاده کنم حالا شما میگید که چی کار کنم؟ هر کاری می کنم به صورت ؟؟؟؟ نمایش میده اما در خود دیتا بیس فارسی هستش و یک چیزه دیگه من از SMF استفاده می کنم حتما یک راهی هست که خود SMF اطلاعات رو بدون مشکل نشون میده منتها تا حالا نفهمیدم اگر می تونید کمکم کنید مرسی

yasgig
یک شنبه 28 شهریور 1389, 11:16 صبح
برو پی اچ پی مای ادمین و ببین اونجا هم علامت سوال نشون میده.

mhd.ghavam
یک شنبه 28 شهریور 1389, 11:21 صبح
برو پی اچ پی مای ادمین و ببین اونجا هم علامت سوال نشون میده.

نه دوست عزیز من که گفتم در دیتا بیس فارسی هستش (در phpMyAdmin فارسی هستش)

yasgig
یک شنبه 28 شهریور 1389, 11:29 صبح
مراحل زیر رو طی کن
ابتدا collation رو utf8_persian_ci قرار بده و بعد توی کد اتصال به بانک اطلاعاتی خودت بعد از اتصال به بانک کد زیر رو قرار بده:

mysql_query("SET NAMES 'utf8'");
مثل کد زیر:

mysql_connect('localhost','root','');
mysql_select_db('yasgig');
mysql_query("SET NAMES 'utf8'");
اگه این کارو انجام بدی مطمئنا درست میشه.

mhd.ghavam
یک شنبه 28 شهریور 1389, 12:18 عصر
مراحل زیر رو طی کن
ابتدا collation رو utf8_persian_ci قرار بده و بعد توی کد اتصال به بانک اطلاعاتی خودت بعد از اتصال به بانک کد زیر رو قرار بده:

mysql_query("SET NAMES 'utf8'");
مثل کد زیر:

mysql_connect('localhost','root','');
mysql_select_db('yasgig');
mysql_query("SET NAMES 'utf8'");
اگه این کارو انجام بدی مطمئنا درست میشه.

سلام دوست عزیز همین کاری که گفتید انجام دادم مشکل حل شد، از اول می گفتی خوب 2 روزه دارم روش کار می کنم به هر حال خیلی ممنون از همه مخصوصا شما، خدا خیرتون بده

yasgig
یک شنبه 28 شهریور 1389, 12:20 عصر
از اول می گفتی خوب 2 روزه دارم روش کار می کنم
آخه شما امروز توی این انجمن پرسیدی:قهقهه:

javadi_31456
جمعه 26 آذر 1389, 10:08 صبح
من همه این کارایی که به دوستمون گفتی رو انجام دادم ، من در ورود اطلاعات مشکل دارم . مثلا وارد کردن اطلاعات در پی اچ پی مای ادمین درست کار می کنه ولی وقتی تو صفحه وبم اطلاعات رو وارد می کنم تو پی اچ پی مای ادمینم هم علامت سوال ذخیره می کنه حالا چی کار کنم ؟؟

در ضمن این کد تو سیستم خودم درست کار می کنه اما وقتی گذاشتمش رو هاست داره اینجوری کار می کنه .

کد



$sql=mysql_query("SET NAMES 'utf8'");

$sql=mysql_query("SET CHARACTER SET utf8");
if($sql=mysql_query("INSERT INTO `user_info` (`u_id`, `u_nameandfamily`, `u_mail`, `u_hes`, `u_name`, `u_pass`, `u_number`, `active`, `permission`) VALUES ('".$id."', '".$name."', '".$mail."', '0', '".$user."', '".$pas1."', '".$number."', '0', '2'


ساختار جدولم هم اینه



CREATE TABLE IF NOT EXISTS `user_info` (
`u_id` bigint(20) NOT NULL,
`u_nameandfamily` varchar(50) collate utf8_persian_ci default NULL,
`u_mail` varchar(50) collate utf8_persian_ci default NULL,
`u_hes` bigint(20) default NULL,
`u_name` varchar(30) collate utf8_persian_ci default NULL,
`u_pass` varchar(30) collate utf8_persian_ci default NULL,
`u_number` varchar(20) collate utf8_persian_ci default NULL,
`active` tinyint(4) NOT NULL default '0',
`permission` tinyint(4) default '2',
PRIMARY KEY (`u_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;


تو صفحمم اینو نوشتم
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>register</title>
</head>
<body>
</body>
</html>

من حتی از این کد هم تو برنامم استفاده کردم

$link=mysql_connect(localhost,$username,$password) ;
mysql_set_charset(‘utf8′,$link)

ممنون می شم زودتر راهنماییم کنید

yasgig
جمعه 26 آذر 1389, 12:00 عصر
mysql_query("SET NAMES 'utf8'");
خب گفتم که بعد از اتصال به بانک اطلاعاتی از کد بالا استفاده کنین.

javadi_31456
جمعه 26 آذر 1389, 12:18 عصر
mysql_query("SET NAMES 'utf8'");
خب گفتم که بعد از اتصال به بانک اطلاعاتی از کد بالا استفاده کنین.

من که تو کدم از این چیزی که گفتین استفاده کردم
بالارو نگاه کنین!
نمی دونم چرا نمی شه :گریه:

yasgig
جمعه 26 آذر 1389, 12:21 عصر
$sql=mysql_query("SET CHARACTER SET utf8");
یا کد بالا رو بردارین یا charset بانک اطلاعاتی خودتون رو به latin تغییر بدین.راستی توی phpmyadmin داده ها رو چجوری نشون میده؟

javadi_31456
جمعه 26 آذر 1389, 12:42 عصر
$sql=mysql_query("SET CHARACTER SET utf8");
یا کد بالا رو بردارین یا charset بانک اطلاعاتی خودتون رو به latin تغییر بدین.راستی توی phpmyadmin داده ها رو چجوری نشون میده؟
من تو سیستم خودم این سایت رو رو wampserver اجرا می کنم مشکلی نداره اما وقتی گذاشتمش رو هاست این مشکل به وجود اومد
الانم رو سیستم خودم درست اجرا می شه یعنی هم تو بانک درسته هم تو خوده سایت اما نمی دونم چرا از وقتی گذاشتمش رو هاست این شکلی شد
تو هاست تویه بانکمم علامت سوال درج میشه
تو سیستمم تو بانک حروف فارسی درج می شه

yasgig
جمعه 26 آذر 1389, 12:47 عصر
آهان.پس شما اول باید بانک اطلاعاتی خودتون در هاست رو پاک کنین.بعد یه بانک اطلاعاتی باز کنین و charset آن را utf8_persian_ci قرار بدین.سپس از بانک اطلاعاتی خود در لوکال بک آپ گرفته و در یک فایل ذخیره نمایید.سپس فایل را باز کنید و محتوای فایل را کپی کنین و در sql پی اچ پی ما ادمین پست نمایید.(از طریق ایمپورت وارد بانک نکنید.)بعد ببینین درست میشه یا نه.
یا هو آی دی من:yasgig_ir

ghader62
شنبه 31 فروردین 1392, 09:39 صبح
دوستان من همه کارهایی رو که عزیزان گفتند انجام میدم ولی قبل از وارد کردن کد زیر نوشته ها بصورت علامت سوال نمایش داده میشوندmysql_query("SET NAMES 'utf8'");

و بعد از وارد کردن کد بالا نوشته ها (مثلا "احسان خواجه امیری")بشکل زیر دیده میشود
"\u0627\u062d\u0633\u0627\u0646 \u062e\u0648\u0627\u062d\u0647 \u0645\u0627\u0645\u06cc"

ممنون میشم دوستان کمکم کنید

nsco_nsco
شنبه 31 فروردین 1392, 10:02 صبح
سلام شما به غیر از فایل اتصال را که یونیکد می کنید باید خود دیتابیس هم یونیکد کنید فکر کنم درست میشود موفق باشید

ghader62
شنبه 31 فروردین 1392, 10:19 صبح
من collation رو هم بصورت utf8_persian_ci تعریف کردم
میشه کمی واضحتر بگید چیکار کنم

MMSHFE
شنبه 31 فروردین 1392, 10:38 صبح
جستجو کنید. تاپیک پرسشهای تکراری (http://barnamenevis.org/showthread.php?356992-%D9%BE%D8%B1%D8%B3%D8%B4%D9%87%D8%A7%DB%8C-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C&p=1576424&viewfull=1#post1576424)

nsco_nsco
شنبه 31 فروردین 1392, 11:11 صبح
سلام زمان ساخت پایگاه داده این طوری درج کن :



`nw` varchar(225) collate utf8_persian_ci NOT NULL default '-',

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=1 ;


موفق باشید

aliebrahimi1900
شنبه 17 اسفند 1392, 08:13 صبح
برای استفاده از زبان فارسی اول باید دقت کنی زمان ساخت نوع اطلاعات (Data Type) و از نوع nvarchar انتخاب کنی بعدم زمان مقدار دهی قبل از رشته هایی که فارسین N قرار بده مثلا
Insert into tableName(fildName)values(N'علی')
موفق باشید