PDA

View Full Version : سوال: در هم ریختگی کارکتر بعد از دریافت اطلاعات از sqlserver از طریق pdo dblib



enidra
شنبه 11 آذر 1391, 16:09 عصر
سلام

من با استفاده از pdo dblib به یک دیتا بیس qslserver2008 وصل شدم و دیتا رو هم دریافت می کنم , کاراکتر های انگلیسی دریت دریافت و نمایش داده می شوند اما کاراکتر های فارسی به صورت یک لوزی تو پر مشکی که علامت سوال سفید رنگ در وسط اون هست , نمایش داده میشه ,
charset=UTF-8 رو در کد اضافه کردم اما مشکل قبل وجود داره ,
در کل از کد های زیر استفاده کردم ,
برای اینکه خروجی دزست بگیرم چیکار باید بکنم ؟
اینم بگم که من از یک سایت به زبان پی اچ پی به دیتا بیس SQLserver2008 وصل شدم و دیتا گرفتم
و collation تیبل sqlserver2008 ,
collation=SQL_Latin1_General_CP1256_CI_AS هست

$hostdb = "212.16.73.225";
$port = 1433;
$namedb = "sgdb";
$userdb = "sa";
$passdb = "ea123";

try {
$dbh = new PDO ("dblib:host=$hostdb:$port;dbname=$namedb;charset=UT F-8","$userdb","$passdb");
$dbh->exec('SET CHARACTER SET utf8');
$dbh->query("SET NAMES utf8");
}
catch (PDOException $e) {
echo "Failed to get DB handle: " . $e->getMessage() . "\n";
exit;
}

$stmt = $dbh->prepare("SELECT *
FROM [sgdb].[INV].[Part]");
$stmt->execute();
while ($row = $stmt->fetch()) {
print($row['PartCode']) . "\n";
print($row['PartName']);
print "<br/>";

}
unset($dbh); unset($stmt);

nsco_nsco
شنبه 11 آذر 1391, 23:45 عصر
فکر می کنم اعمال UTF-8 را در پایگاه داده انجام نداده اید . موفق باشید

MohammadReza.OmidAllah
یک شنبه 12 آذر 1391, 00:22 صبح
بیا دوست عزیز از توابع زیر استفاده کن من هم تا چند روز پیش گرفتار همین مشکل بودم

function persian_sql_to_php($str){
if(mb_detect_encoding($str) == 'UTF-8' AND mb_check_encoding($str, 'UTF-8')){
$str = utf8_decode($str);
}
$str = iconv('Windows-1256', 'UTF-8', $str);
return $str;
}

function persian_php_to_sql($str){
$str = iconv('UTF-8', 'Windows-1256', $str);
return $str;
}

enidra
یک شنبه 12 آذر 1391, 11:00 صبح
بیا دوست عزیز از توابع زیر استفاده کن من هم تا چند روز پیش گرفتار همین مشکل بودم

function persian_sql_to_php($str){
if(mb_detect_encoding($str) == 'UTF-8' AND mb_check_encoding($str, 'UTF-8')){
$str = utf8_decode($str);
}
$str = iconv('Windows-1256', 'UTF-8', $str);
return $str;
}

function persian_php_to_sql($str){
$str = iconv('UTF-8', 'Windows-1256', $str);
return $str;
}



دوست عزیز خیلی ممنونم , این توابع کار کرد و خروجی رو درست گرفتم , از لطف و راهنماییت سپاسگزارم