PDA

View Full Version : سوال: نمايش ناصحيح متن فارسي



stalingerad2005
یک شنبه 30 آبان 1389, 16:21 عصر
سلام دوستان
من به sql server 2000 با php كانكشن زدم و يكسري اطلاعات در خروجي چاپ كردم
خروجيشو بصورت ؟ كه در عكس هم گذاشتم نشون ميده.
راستش از هرچي تابع كه راجب utf-8 بود هم استفاده كردم نشد

funpatogh
یک شنبه 30 آبان 1389, 19:46 عصر
collation جدول و چارست رو چی تعیین کردید؟
آیا صفحتون رو هم با انکودینگ utf8 ذخیره کدید و توی تگ head هم چارست رو روی utf-8گزاشتید؟
در این مورد خیلی بحث شده و با جستجو به جوابتون خواهی رسید

alonemm
یک شنبه 30 آبان 1389, 20:08 عصر
نوع داده ای توی SQL چی هست؟

stalingerad2005
دوشنبه 01 آذر 1389, 09:01 صبح
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
رو گذاشتم
coll هم default هستش
type هم nvarchar

shahriyar3
دوشنبه 01 آذر 1389, 18:57 عصر
استالینگراد عزیز
متاسفانه sql 2000 امکان تعریف collation را بصورت دستی ندارد.
میتونید از این کد قبل از ارسال مقادیر به دیتابیس و بعد از دریافت آن استفاده کنید.


$value = utf8_encode ($value);

stalingerad2005
سه شنبه 02 آذر 1389, 07:34 صبح
من فقط داده ها رو مي تونم select كنم و دسترسي به insert داده ها ندارم اين تابع رو هم قبلا امتحان كردم ولي جواب نداد.

ravand
سه شنبه 02 آذر 1389, 09:58 صبح
من یه همچین مشکلی داشتم . شما در فرم ارسال متنتون به دیتابیس قبل از mysql_query از کد زیر استفاده کردید .

mysql_query("SET CHARACTER SET utf8");
ولی در برنامه ای که اطلاعاتتون رو چاپ می کنه از این کد قبل از mysql_query استفاده نکردید.
شاید دلایل دیگه ای هم باشه. حالا شما اینو امتحان کنید انشالله حل میشه.:لبخند:

stalingerad2005
سه شنبه 02 آذر 1389, 11:29 صبح
سلام كد من اينه كه توش اصلا از mysql_query استفاده نكردم.

$myServer = "com-040";
$myUser = "";
$myPass = "";
$myDB = "test";
$sqlconnect=mssql_connect($myServer, $myUser, $myPass) or die ("could not connect to server");
$sqldb=mssql_select_db("test",$sqlconnect);
$Emp_No=$code;
$SDate=$gdate1;
$EDate=$gdate2;
$stmt=mssql_init("sp_selectTaradodByCode", $sqlconnect);
mssql_bind($stmt, "@Emp_No", $Emp_No, SQLVARCHAR, FALSE);
mssql_bind($stmt, "@SDate" , $SDate, SQLVARCHAR, FALSE);
mssql_bind($stmt, "@EDate" , $EDate, SQLVARCHAR, FALSE);
$result=mssql_execute($stmt);
print("<div id='print_content'><table id='1' dir=rtl align=center border='1' style=border-collapse:collapse;text-align:center;font-family:tahoma;font-size:11px;line-height:150%><tr><td colspan=3> كد پرسنلي: ".$code." </td><td colspan=3>از تاريخ: ".$_POST['SDate']." "." تا تاريخ : ".$_POST['EDate']."</td></tr><tr><td width='10%'><b>روز</b></td><td width='10%'><b>ورود</b></td><td width='10%'><b>خروج</b></td><td width='10%'><b>زمان كار</b></td><td width='10%'><b>اضافه كاري</b></td><td width='20%'><b>توضيحات</b></td></tr>");
while ($arr=mssql_fetch_row($result)){
print ("<tr><td>" .utf8_decode($arr[2]). "</td><td>" .$arr[3] . "</td><td>" .$arr[4] . "</td><td>" .$arr[5] . "</td><td>" .$arr[7] . "</td><td>" .html_entity_decode($arr[8], ENT_QUOTES, "utf-8" ). "</td></tr>" );
}
print("<tr><td colspan='6' align='left'><form action='' method='post'><a href='javascript:Clickheretoprint()'>چاپ صفحه</a></form></td></tr></table></div>");

}

stalingerad2005
شنبه 06 آذر 1389, 13:24 عصر
سلام دوستان
من هنوز به نتيجه نرسيدم
لطفا دوستان اهل فن راهنمايي كنيد.

binyaft
شنبه 06 آذر 1389, 13:39 عصر
من یه همچین مشکلی داشتم . شما در فرم ارسال متنتون به دیتابیس قبل از mysql_query از کد زیر استفاده کردید .

mysql_query("SET CHARACTER SET utf8");
ولی در برنامه ای که اطلاعاتتون رو چاپ می کنه از این کد قبل از mysql_query استفاده نکردید.
شاید دلایل دیگه ای هم باشه. حالا شما اینو امتحان کنید انشالله حل میشه.:لبخند:
Query های sql با mysql فرق داره!

funpatogh
یک شنبه 07 آذر 1389, 02:32 صبح
اینو هم تست کنید


iconv("ISO-8859-1","UTF-8", $text);

stalingerad2005
یک شنبه 07 آذر 1389, 11:33 صبح
اینو هم تست کنید


iconv("ISO-8859-1","UTF-8", $text);



مرسي يه تغييرايي كرده اما اينجوري

funpatogh
یک شنبه 07 آذر 1389, 19:54 عصر
خوب collation دیتابیس شما مشکل داره که اینجوریه