View Full Version : ارسال متن فارسی از سرور به اپ
JYasProgramer
پنج شنبه 20 خرداد 1395, 06:36 صبح
سلام دوستان
دیتابیسی دارم و فیلد فارسی در رکوردهای این دیتابیس ذخیرست
حالا میخام این متن فارسی رو از سرور به اپ بفرستم
ارسال انجام میشه اما به صورت علامت سوال نمایش میده ؟؟؟ ؟؟؟؟
حالا سوالم اینه که چطوری میشه این متن فارسی از سرور به اپ فرستاد
من از کتابخونه volley استفاده میکنم برای ارتباط با سرور استفاده میکنم
saeidcd
پنج شنبه 20 خرداد 1395, 09:19 صبح
تو اموزش اقای godofphp (http://barnamenevis.org/member.php?299149-godofphp)
http://barnamenevis.org/showthread.php?522578-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87-%DB%8C-volley-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-(%D9%81%D8%A7%D8%B1%D8%B3%DB%8C)
این مشکل حل شده
https://gist.github.com/Ellip-commerce/ee56c2f1fba8580f34d7c609d081f02d
JYasProgramer
پنج شنبه 20 خرداد 1395, 11:55 صبح
بازم حل نشد
یه کلاس ساختم
JsonArrayRequestUtf8
import java.io.UnsupportedEncodingException;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Response;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;
import com.android.volley.toolbox.StringRequest;
public class JsonArrayRequestUtf8 extends StringRequest {
public JsonArrayRequestUtf8(int post, String url, Listener<String> listener, Response.ErrorListener errorListener) {
super(post, url, listener, errorListener);
}
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(
response.data,
"UTF-8"
);
return Response.success(
json,
HttpHeaderParser.parseCacheHeaders(response)
);
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
}
}
}
حالا در کلاس مورد نظرم بدین نحو از این کلاس استفاده میکنم:
JsonArrayRequestUtf8 json = new JsonArrayRequestUtf8(Method.POST,
AppConfig.URL_GET_NEW_MSG,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jObj = new JSONObject(response);
String message = jObj.getString("message");
Log.i("1", message);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("", "Login Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
}
})
{
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("tblUnique_ID", "575666f99225e2.84345927");
return params;
}
};
AppController.getInstance().addToRequestQueue(json , "req_msg");
جایی اگه خطا کردم لطفا بگین...
amirxbest
جمعه 21 خرداد 1395, 15:40 عصر
اول از همه نوع فیلدها رو در دیتا بیس بزار utf8-persianci
و دوم اینکه داخل فایل وب سرویس اگه با php هست این خط رو اضافه کن
mysql_query("SET NAMES UTF8");
godofphp
جمعه 21 خرداد 1395, 21:45 عصر
دوست عزیز ، قبل از هر کاری مطمئن شوید درخواستی که میسازید از کلاس جدیدی که ساختید استفاده میکنه
مثلا قبلا اگه از JsonArrayRequest استفاده میکردید الان از نام کلاس جدیدی که از اون مشتق میشه و تغییرات uft-8 روش اعمال شده استفاده کنید
---
لازم به ذکره سمت سرور بین کدهای php نیازی نیست کار خاصی بکنید و هنگام تعریف فیلد های دیتابیس دقت کنید که Collation اون رو مناسب و utf8 انتخاب کرده باشید
توصیه میکنم اول روی مرورگر ویندوز تست کنید کاراکترها ااگه درست بودند بعد برید سمت اندروید و همونطور که دوست خوبمون لینک های بنده رو دادند کلاس جدیدی بسازید
so2011
دوشنبه 24 خرداد 1395, 23:11 عصر
اینو یه نگاه بندازید:
http://www.kelidestan.com/keys/keys.php?key=3979
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.