الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف ارسل حروف عربية عبر json الي ملف بي اتش بي

بدأه fdoly في 23 أبريل 2012 · 12 رد · 2,010 مشاهدة · في Android
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاتة

ارجو المساعدة في هذا الموضوع ؛

لدي كود يعمل من خلال الاندويد ليتصل بقاعدة بيانات عن طريق البي اتش بي ، و الكود كما يلي

 	public void postData() throws JSONException, UnsupportedEncodingException{  
		// Create a new HttpClient and Post Header

		HttpClient httpclient = new DefaultHttpClient();
		HttpPost post = new HttpPost("http://XXX.XX.XXX/www/test.php");
		JSONObject json = new JSONObject();
		try {
			// JSON data:


			json.put("na", tv.getText());
			json.put("po",rd.getText());
			json.put("poe",nv.getText());


			JSONArray postjson=new JSONArray();
			postjson.put(json);

			// Post the data:
			post.setEntity(new ByteArrayEntity(json.toString().getBytes("UTF8")));
			post.getParams().setParameter("jsonpost",postjson);
			post.setHeader("Content-type", "application/json");
			post.setHeader("json",json.toString());

			//this is somthing els

			Toast.makeText(getApplicationContext(), "text",Toast.LENGTH_SHORT).show();
			System.out.print(json);
			HttpResponse response = httpclient.execute(post);

			Toast.makeText(getApplicationContext(), "Database Updated",Toast.LENGTH_SHORT).show();
			{
				InputStream is = response.getEntity().getContent();

				BufferedReader reader = new BufferedReader(new InputStreamReader(is));
				StringBuilder sb = new StringBuilder();

				String line = null;
				try {
					while ((line = reader.readLine()) != null) {
						sb.append(line + "\n");
					}
				} catch (IOException e) {
					e.printStackTrace();
				} finally {
					try {
						is.close();

					} catch (IOException e) {
						e.printStackTrace();
					}
				}
				text = sb.toString();
			}



		}catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
		} catch (IOException e) {
    		// TODO Auto-generated catch block
			return; 
    	}
	}
	    });

و هذا هو الكود المختص ب البي اتش بي

<?php
 header('Content-type: text/json, charset=utf-8');
 include("JSON.php");
 $json = $_SERVER['HTTP_JSON'];
	$data = json_decode($json);	
$data = utf8_encode($data);
$json = json_decode($data, true);
	$name = $data->na;
  $pos  = $data->po;
  $pos1  = $data->poe;
	// Connect to our database
	mysql_connect("localhost","admin","");
	mysql_select_db("tedtdata");
mysql_query("INSERT INTO `test` ( `Fro` , `ToT` , `Pho` , `Nao` )
VALUES (
'$pos', '$name', '".$data->{'poe'}."', 'test'
)");
?>

الكود يعمل بشكل جيد في ما عدا دعم اللغة العربية و التي تظهر في قاعدة البيانات علي شكل حروف انجليزية او ارقام

و في انتظار مساعدتكم بارك الله فيكم و لكم جزيل الشكر

#2

قم بطباعة النص في الأندرويد و على الخادم قبل أن يدخل قاعدة البيانات ..

أيضا لا تنسى :

post.setHeader("Accept-Charset", "UTF-8");

اقتباس
post.setHeader("json",json.toString());

ما هذا؟

#3

السلام عليكم و رحمة الله

حاولت ان احزف الاضافة (post.setHeader("json",json.toString());

)

لكن يتم ادخال قيم فارغة الي قاعدة البيانات، حتي بعد اضافة post.setHeader("Accept-Charset", "UTF-8"); ما زالت المشكلة قائمة

لك الشكر علي الرد و بارك الله فيك

#4

ارني كيف مثال على شكل البيانات في قاعدة البيانات

#5

السلام عليكم

يعني مثلاً اذا كتبت علي التيكست حرف القاف وضغطت علي زر الارسال يظهر في حقل قاعدة البيانات علي حرف B

اما في حالة حزف

 post.setHeader("json",json.toString());

فان الحقل يكون فارغ تماماً

علماً باني جربت ادخال اللغة العربية من البي اتش بي فتمت العملية بنجاح، دلالة علي ان المشكلة في كود الاندرويد

شكرا علي الاهتمام

#6

هل البيانات شكلها

هكذا

\u1605\u1581\u1605\u1583\u1593\u1585\u1587\u1575\u1606

ام

صور برامج

؟

ولاضافة Parameter لل Requst

استخدم

HttpPost post=new HttpPost("");
HttpParams params=post.getParams();
params.setParameter("json", json.toString());
#7

تظهر هكذا اذا ارسلت سس مثلا

33
#9

على ما يبدو المشكلة انك تستخدم ال Header لنقل البيانات

و حسبما قرأت ان ال Header Encoding هو ISO-8859-1 .

http://stackoverflow.com/questions/324470/http-headers-encoding-decoding-in-java

استخدم الطريقة الاخرى Parameters لنقل البيانات

#10

بالنسبة للجمل الاطول فان الكود لا يقبل جملة طويلة في حالة اللغة العربية

اما عن Parameters سوف اجرب ان اغير الكود و افيدك بالنتيجة ، ولو كان لديك مثال اكون شاكراً جدا

و بارك الله فيك

#11

نفس المشكلة

مازالت المشكلة قائمة ، هل من مقترح ؟

شكرا

#13
.S.T.A.L.K.E.R كتب:

اعطيني مثال على جملة اكبر لو سمحت

السلام عليكم

الكود لا يقبل الجمل الطويلة ولا يقبل المسافة بين الكلمة و الاخري

ولكن اذا كتب كلمة " من " مثلا فانها تظهر في قاعدة البيانات علي شكل " EF"

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…