ورود

View Full Version : دریافت اطلاعات از mysql؟



javaweb341
سه شنبه 16 تیر 1394, 05:26 صبح
سلام دوستان
من یک برنامه اندروید می خواهم که بواند از بانک ازلاعاتی سرور اطلاعات یک جدول را بردارد و در بانک اطلاعاتی اپلیکیشن قرار دهد
از کد php زیر و از دستور json_encode برای تبدیل اطلاعات به فرم تکنولوژی json استفاده میکنم ولی متن های فارسی را به درستی نمایش نمی دهد و علامت ؟ نمایش میدهد


<?php
$hostname='localhost';
$username='xxxxxxxxx';
$password='xxxxxxxxx';
$response = array();
try {

$dbh=new PDO("mysql:host=$hostname;dbname=dbtest",$username,$password);

$response["allnews"] = array();

/*** QUERY ****/
$sql='SELECT * FROM test';

$stmt=$dbh->query($sql);

$objs = $stmt->fetchAll(PDO::FETCH_OBJ);

foreach($objs as $object) {
$news = array();
$news["id"]=$object->id;
$news["Onvan"]=$object->title;
$news["Matn"]=$object->text;

array_push($response["allnews"], $news);
}

echo json_encode($response);

/*** close connection ***/
$dbh=null;

}catch(PDOException $e) {
echo $e->getMessage();
}
?>


برای رفع این مشکل چکار کنم،راه بهتری وجود دارد؟
چجوری توی برنامه اندروید این اطلاعات json را استخراج کنم و در بانک قرار دهم؟
خیلی فوریه لطفا کمک کنید
ممنون

tux-world
سه شنبه 16 تیر 1394, 09:17 صبح
چرا utf-8 رو به کانکشن ست نکردی؟ یونیکد دیتابیست چیه؟ انگار یکی از این دوتا اشتباهه

javaweb341
سه شنبه 16 تیر 1394, 09:33 صبح
من زمانی از mysql:charset=utf8mb4 استفاده می کنم


$dbh=new PDO("mysql:charset=utf8mb4;host=$hostname;dbname=dbtest",$username ,$password);

اطلاعات به شکل زیر تبدیل می شوند مثلا عنوان

"Onvan":"\u00d8\u00ab\u00d8\u00b1\u00d9\u0088\u00d8\u00aa \u00da\u00a9\u00d9\u0084\u00d8\u00a7\u00d9\u0086 \u00d9\u0085\u00d8\u00ae\u00d8\u00aa\u00d8\u00b1\u 00d8\u00b9 \u00d8\u00a7\u00d8\u00b3\u00d9\u00be\u00d8\u00b1\u 00db\u008c \u00d8\u00af\u00d8\u00a7\u00d9\u0088\u00d8\u00b1\u 00d8\u00a7\u00d9\u0086 \u00d8\u00af\u00d8\u00b1 \u00d8\u00ac\u00d8\u00a7\u00d9\u0085 \u00d8\u00ac\u00d9\u0087\u00d8\u00a7\u00d9\u0086\u 00db\u008c"
و در اندروید هم به شکل زیر نمایش داده می شود
132980
در اندروید هم از utf-8 استفاده کردم
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
از روش های زیر نیز استفاده کردم ولی هیچ تغییری نمی کند

header("Content-type: application/json; charset=utf-8");
و


$news["id"]=utf8_encode( $object->id);
$news["Onvan"]=utf8_encode($object->title);
$news["Matn"]=utf8_encode($object->text);

کمک:افسرده:

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

javaweb341
سه شنبه 16 تیر 1394, 10:07 صبح
مشکل از json نیست وقتی هم با
print_r($response) اطلاعات دریافت شده از بانک را نمایش می دهم اطلاعات صحیح نیستن چجوری این مشکل را رفع کنم؟

tux-world
سه شنبه 16 تیر 1394, 10:08 صبح
اول این کد رو اصلاح کن

$dbh=new PDO("mysql:charset=utf8mb4;host=$hostname;dbname=d btest",$username ,$password);

utf8mb4 رو بکن utf8. تو phpmyadmin دیتابیس و جدولهات رو تست کن ببین یونیکدشون چیه نوشته جلوی جدولهات

javaweb341
سه شنبه 16 تیر 1394, 10:17 صبح
ممنون مشکل رفع شد:قلب:اطلاعات به درستی نمایش داده میشوند

javaweb341
سه شنبه 16 تیر 1394, 18:37 عصر
من اطلاعاتو به درستی دریافت کردم و در list نمایش دادم ولی الان بعد چند ساعت دوباره کد را اجرا می کنم و خطا می دهد :گریه: نه برنامه و نه php را تغییر ندادم
132998
؟؟؟؟؟؟؟؟؟؟