PDA

View Full Version : مشکل با کارکترهای فارسی در sqlserver



mina.net
سه شنبه 18 اسفند 1388, 14:39 عصر
سلام دوستان
من وقتی از mssql مقادیری رو از طریق php نمایش می دهم فقط کارکترهای انگلیسی درست نمایش پیدا می کنه و کارکترهای فارسی مشکل دارند.
این در حالی هست که در محیط خود mssql مشکلی وجود ندارد.
لطفا راهنمایی فرمایید.

Mah
سه شنبه 18 اسفند 1388, 15:18 عصر
كدينگ صفحه تون را فارسي (UTF-8) قرار دهيد .

يا صفحه را با فرمت utf-8 ذخيره نمائيد .

mina.net
چهارشنبه 19 اسفند 1388, 19:27 عصر
كدينگ صفحه تون را فارسي (UTF-8) قرار دهيد .

يا صفحه را با فرمت utf-8 ذخيره نمائيد .

سلام دوست عزیز
من اینکار رو قبلا انجام دادم. با کارکتارهای فارسی در حالت عادی مشکلی ندارم. فقط وقتی از بانک می خونم مشکل داره.
در حالی که تو خود بانک مشکلی وجود نداره. در ضمن من همین اطلاعات رو از طریق vb.net نشون می دم هم مشکلی نداره. یعنی فکر نمی کنم مربوط بانک باشه!!
این هم همه کد صفحه مورد نظر هست . باید چه تغییری بدم؟


<HTML>
<head>
<title>barbod</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
</EMBED>
<body>
<?php
$mscon = mssql_connect('pc6','sa','2');
if($mscon)
print ("Connection Sucsessful!");
else
print("Connection Failed!");
mssql_select_db("farsh1",$mscon);
$webid = strtolower($_POST['webid']);
$sql = "select idf,metr,rang ,(SELECT CASE when dateam IS NULL then 'آماده نيست' else dateam END) AS DATEAM,firofo,fikol from MainWeb where ltrim(rtrim(webid))=ltrim(rtrim('".$webid."'))";
$result = mssql_query($sql,$mscon);
?>
<table border=1 align="center">
<caption> نتيجه </caption>
<th WIDTH=120>قيمت کل</th>
<th WIDTH=120>قيمت رفو</th>
<th WIDTH=120>تاريخ آماده شدن</th>
<th WIDTH=120>رنگ</th>
<th WIDTH=120>متراژ</th>
<th WIDTH=120>شماره رمز قالي</th>
<?php
print("<br><br>");
for($i = 0 ; $i != mssql_num_rows($result) ; $i++)
{
?>
<tr>
<td ALIGN="CENTER"><?php
print(@mssql_result($result,$i,5))?></td>
<td align="center"><?php
print(@mssql_result($result,$i,4))?></td>
<td align="center"><?php
print(@mssql_result($result,$i,3))?></td>
<td align="center"><?php
print(@mssql_result($result,$i,2))?></td>
<td align="center"><?php
print(@mssql_result($result,$i,1))?></td>
<td align="center"><?php
print(@mssql_result($result,$i,0))?></td>
</tr align="center">
<?php
}
?>
</table>
</body>
</html>








من نمی دونم چرا قبلا این همه توضیح داده شده و پست ارسال شده این دوستان سرچی در سایت نمی کنند ؟!

دوست عزیز معمولا برنامه نویسای php از mysql استفاده می کنن و نه از mssql بخاطر همین مطلب در این مورد یا نیست و یا بسیار کم هست. من که چیزی راجع به این موضوع در تالار php ندیدم ، اگه شما پیدا کردید لینک بدید ممنون می شم.

mina.net
پنج شنبه 20 اسفند 1388, 12:46 عصر
این لینک رو مطالعه کنید :

سلام
ممنون که وقت می زارید
این کوئری رو چطور باید استفاده کنم.


SET NAMES 'utf8'

من به این شکل استفاده می کنم.


mssql_query('set names utf8');

این خطا رو می ده
barbodWarning: mssql_query() [function.mssql-query (http://barnamenevis.org/forum/function.mssql-query)]: message: 'names' is not a recognized SET option. (severity 15) in F:\wamp\www\MyWeb\barbodsoft\HTML4\Search.php on line 20

Warning: mssql_query() [function.mssql-query (http://barnamenevis.org/forum/function.mssql-query)]: Query failed in F:\wamp\www\MyWeb\barbodsoft\HTML4\Search.php on line 20

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

mina.net
پنج شنبه 20 اسفند 1388, 14:11 عصر
بازم سلام
از کد زیر هم استفاده کردم نتیجه نداد


<?php
$str=@mssql_result($result,$i,2);
$cur_encoding = mb_detect_encoding($str) ;
if($cur_encoding == "UTF-8" && mb_check_encoding($str,"UTF-8"))
//print("1");
print($str);
else
//print("2");
$str2=utf8_encode($str);
print($str2);
?>

mina.net
پنج شنبه 20 اسفند 1388, 14:38 عصر
سلام دوستان
درست شد.
باید کارکترهای مورد نظر را با کد زیر تغییر داد. دوستان باتجربه تر ببیند یا این کد مشکلات ثانویه ای ایجاد نخواهد کرد؟ مثلا آیا این کد موقعی که بخواد رکورد های زیادی رو برگردونه تاخیر نخواهد داشت؟ زیرا تعداد دفعات زیادی باید این تابع اجرا بشه.


$str=@mssql_result($result,$i,3);

if ($unserialize = unserialize($str))
{
foreach ($unserialize as $key => $value)
{
$unserialize[$key] = @iconv('windows-1256', 'UTF-8', $value);
}
$serialize = serialize($unserialize);
$str2= $serialize;
}
else
{
$str2= @iconv('windows-1256', 'UTF-8', $str);
}
print ($str2);