ورود

View Full Version : مشکل عجیب فارسی با volley



r.miri19
شنبه 06 تیر 1394, 16:20 عصر
مشکل من اینه وقتی که با اندروید و کتابخانه Volley می خوام اطلاعات رو بفرستم واسه php همه کاراکتر های فارسی به صورت علامت سوال هستند.
در حالتی که اطلاعات رو می گیرم فارسی هستند اما موقع فرستادن فارسی نیستند و در دیتابیس به صورت ؟؟؟؟؟؟؟ هستند.
کسی راه حلی داره؟
من توی stackoverflow هم سرچ زذم اما به جواب هایی رسیدم که عملی نشدند.
http://stackoverflow.com/questions/17404178/android-volley-api-utf-8
http://stackoverflow.com/questions/19267616/why-does-volleys-response-string-use-an-encoding-different-from-that-in-the-res

در ضمن دیتابیس و php فارسی هستند و توی مرورگر خوب کار می کنند.

djtrex
شنبه 06 تیر 1394, 23:59 عصر
میتونید کدی که دیتا رو ارسال میکنید بذارید؟

من از JsonRequest و GsonRequest استفاده کردم به صورت پیشفرض مشکلی نداشتم احتمالا سمت سرور موقع insert مشکل دارید یا دیتایی که می فرستید با volley به صورت utf-8 نیست.
قبل از ارسال سمت اندروید و قبل از insert در در دیتابیس دیتاتونو لاگ کنید ببینید درسته ؟

--------------
JsonRequest که توی خود volley هست برای GsonRequest:
https://github.com/DWorkS/VolleyPlus/blob/master/library/src/com/android/volley/request/GsonRequest.java

در ضمن پیشنهاد میکنم با VolleyPlus هم یه تستی بکنید (یه سریع امکانات بیشتر اضافه کرده به Volley)
https://github.com/DWorkS/VolleyPlus

r.miri19
یک شنبه 07 تیر 1394, 14:55 عصر
میتونید کدی که دیتا رو ارسال میکنید بذارید؟

من از JsonRequest و GsonRequest استفاده کردم به صورت پیشفرض مشکلی نداشتم احتمالا سمت سرور موقع insert مشکل دارید یا دیتایی که می فرستید با volley به صورت utf-8 نیست.
قبل از ارسال سمت اندروید و قبل از insert در در دیتابیس دیتاتونو لاگ کنید ببینید درسته ؟

--------------
JsonRequest که توی خود volley هست برای GsonRequest:
https://github.com/DWorkS/VolleyPlus/blob/master/library/src/com/android/volley/request/GsonRequest.java

در ضمن پیشنهاد میکنم با VolleyPlus هم یه تستی بکنید (یه سریع امکانات بیشتر اضافه کرده به Volley)
https://github.com/DWorkS/VolleyPlus

ممنونم که جواب دادی.
با ابن دستور

URLEncoder.encode(str, "UTF-8");
هرچی که داخل url بود و فارسی بود رو تبدیل کردم و کار کرد.

amirjo0on
یک شنبه 26 فروردین 1397, 00:16 صبح
ممنونم که جواب دادی.
با ابن دستور

URLEncoder.encode(str, "UTF-8");
هرچی که داخل url بود و فارسی بود رو تبدیل کردم و کار کرد.


منم همین مشکلو دارم پس چرا حل نمیشه:ناراحت::گریه::گریه::گر ه:

جزئیات برنامم:
https://stackoverflow.com/questions/49832064/post-utf8persian-ore-arabic-in-android-with-volley-and-php

farhad_shiri_ex
یک شنبه 26 فروردین 1397, 02:34 صبح
منم همین مشکلو دارم پس چرا حل نمیشه:ناراحت::گریه::گریه::گر ه:

جزئیات برنامم:
https://stackoverflow.com/questions/49832064/post-utf8persian-ore-arabic-in-android-with-volley-and-php

سمت اندروید کاری با برنامه ندارید فقط سمت سرور من این فانکشن رو نوشتم ...


public function __construct()
{
$settings = SystemComponent::getSettings();

$host = $settings['dbhost'];
$db = $settings['dbname'];
$user = $settings['dbusername'];
$pass = $settings['dbpass'];

$this->link = mysqli_connect($host,$user,$pass);
$this->link->set_charset("utf8");
mysqli_select_db($this->link,$db);
if($this->link->error){
echo "Couldn't connecto to DATABASE : " . "<br>"; //. mysqli_connect_error()
return;
}
register_shutdown_function(array(&$this,'close'));

}

کلا ورودی های کانکشن رو utf8 کردم بدون هیچ مشکلی کارم راه افتاد.
البته اگر از php برای وب سرویس استفاده کردین اگر نه که بگید از چه نوع وب سرویسی استفاده میکنید؟
چون منهم یه بخشی از کلاسهای volly استفاده میکنم این encoder ظاهرا جواب نمیده و پاکت های ارسالی داده رو نمیتونه encode کنه به کاراکترهای یونیکد برای همین من سمت سرور انجام دادم مشکلم رفع شد.
اگر از دوستان کسی خواست بگید کلاسهای وب سرویسی که نوشتم براتون ارسال کنم.

amirjo0on
یک شنبه 26 فروردین 1397, 10:09 صبح
سمت اندروید کاری با برنامه ندارید فقط سمت سرور من این فانکشن رو نوشتم ...


public function __construct()
{
$settings = SystemComponent::getSettings();

$host = $settings['dbhost'];
$db = $settings['dbname'];
$user = $settings['dbusername'];
$pass = $settings['dbpass'];

$this->link = mysqli_connect($host,$user,$pass);
$this->link->set_charset("utf8");
mysqli_select_db($this->link,$db);
if($this->link->error){
echo "Couldn't connecto to DATABASE : " . "<br>"; //. mysqli_connect_error()
return;
}
register_shutdown_function(array(&$this,'close'));

}

کلا ورودی های کانکشن رو utf8 کردم بدون هیچ مشکلی کارم راه افتاد.
البته اگر از php برای وب سرویس استفاده کردین اگر نه که بگید از چه نوع وب سرویسی استفاده میکنید؟
چون منهم یه بخشی از کلاسهای volly استفاده میکنم این encoder ظاهرا جواب نمیده و پاکت های ارسالی داده رو نمیتونه encode کنه به کاراکترهای یونیکد برای همین من سمت سرور انجام دادم مشکلم رفع شد.
اگر از دوستان کسی خواست بگید کلاسهای وب سرویسی که نوشتم براتون ارسال کنم.


من از php در سی پنل استفاده میکنم
اینی که گفتید سمت اندروید و کاری ندارم یعنی از URLEncoder استفاده نکنم ؟
اگه میشه کلاس هارو بدید یه بررسی کنم
اینقدر گشتم یواش به این نتیجه دارم میرسم که این کتابخونه اصن فارسی ساپورت نمیکنه:افسرده:

farhad_shiri_ex
یک شنبه 26 فروردین 1397, 10:44 صبح
من از php در سی پنل استفاده میکنم
اینی که گفتید سمت اندروید و کاری ندارم یعنی از URLEncoder استفاده نکنم ؟
اگه میشه کلاس هارو بدید یه بررسی کنم
اینقدر گشتم یواش به این نتیجه دارم میرسم که این کتابخونه اصن فارسی ساپورت نمیکنه:افسرده:

منم نگفتم که با چه پنلی و یا چه هاستی استفاده میکنید ربطی به پنل نداره!
گفتم پی اچ پی فانکشن ام براتون ارسال کردم یعنی تو وب سرویس تون که به زبان php نوشته شده تغییرات لازم رو انجام بدید!