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

مشكلة اللغة العربية بين Midlet & Servlet

بدأه Yahia Swed في 12 يناير 2012 · 4 رد · 1,137 مشاهدة · في JavaME
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :

كيفكم شباب :)

الحقيقة واجهتني مشكلة مع اللغة العربية أثناء استدعاء بعض المعلومات من قاعدة البيانات عن طريق Servlet إلى Midlet

المعلومات باللغة العربية موجودة داخل قاعدة بيانات على الانترنت >> تستدعي Servlet المعلومات >> تعرض Midlet المعلومات ولكن برموز لأنها باللغة العربية !!

مع أن المعلومات تظهر بالشكل الصحيح إذا قمت بتشغيل Servlet فقط .

هذا الهيدر الذي انشئه في Midlet

hc.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded");
            hc.setRequestProperty("Content-Length",
                    Integer.toString(Classes.length()));

علما ً ان hc هي HttpConnection

بانتظار خبراتكم :) وشكرا ً .

#2

ما هو ترميز قاعدة البيانات؟

جرب إضافة التالى:

String dbEncoding = "UTF-8"; // "WINDOWS-1256" or "ISO-8859-6" or whatever it is
hc.setRequestProperty("Accept-Charset", dbEncoding);
#3

لا تنسى قراءة البيانات بإستخدام نفس الترميز المستخدم ...

مثال:

InputStream is = hc.getInputStream();
byte[] rply = stream2Bytes(is);

String s = new String(rply, dbEncoding);

// ...............
private byte[] stream2Bytes(InputStream istream) throws IOException
	{
		ByteArrayOutputStream outstream = new ByteArrayOutputStream();
		int c;
		while ((c = istream.read()) != -1)
		{
			if (c != 0x0A && c != 0x0D) // prevent new line character from being written
			{
				if (c == 0x09)
					c = 0x20; // prevent tab character from being written, instead write single space char
				outstream.write(c);
			}
		}
		byte[] ret = outstream.toByteArray();
		outstream.close();
		return ret;
	}
1
#4

بداية شكرا ً لك على الرد :)

اولا ً ترميز القاعدة هو utf-8

ثانيا ً لا اعتقد المشكلة من الترميز بسبب : جربت وضع هذا الكود قبل وضع سؤالي ولم استفد من أي ترميز !

السبب الآخر هو عند الكتابة فقط في Servlet دون استدعاء المعلومات من قاعدة البيانات تظهر المعلومات المكتوبة بشكل خاطئ !

أقصد بكلامي أني لو وضعت هذا السطر في Servlet

out.print("بسم الله الرحمن الرحيم");

فسيظهر بـ Midlet بشكل خاطئ علما ً أن هذه المعلومات لم أقم باستدعائها من القاعدة !!

أشكرك أخي مرة أخرى :) وأرجو أن لو لديك حل آخر يفيد :)

#5

ثااااانكس ^_^

String s = new String(rply, dbEncoding);

هذا الكود أعطى نتيجة ^___^

الله يوفقك ياارب ;)

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