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

مشكلة ترميز رسائل SMS من خلال جافا

بدأه JAVA FOR ALL في 28 يوليو 2013 · 4 رد · 1,130 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

لدي مشكلة مع ارسال رسائل sms من خلال جافا حيث جربت الارسال باغلب الترميزات ومنها UTF-8 ولكن يصل كرموز غريبه $$ وفي احسن احواله علامات استفهام ؟؟؟؟؟

مع العلم ان الارسال باللغة الانجليزية يصل للجوال سليم 100% ..

 

اتمنى من لديه حل يفيدنا به ...

 

دمتم بحفظ الله ورعايته ...

سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولاحول ولا قوة إلا بالله

get-one-91.gif

الخبــــــرة هي مـــــــــــا تحصل عليه عندمــــا لا تحصل على ما تريده....

#2

جرب تمرير النص علي الفنكشن URLEncoder.encode قبل ارساله

#3

تم حل المشكلة من خلال تحويل نص الرسالة قبل الارسال باستخدام الكود التالي :

 

public static String convertUnicode(String str) {        char[] chars = str.toCharArray();        StringBuffer strBuffer = new StringBuffer();        for (int i = 0; i < chars.length; i++) {            strBuffer.append(forDigits( Integer.toHexString((int) chars)));        }        return strBuffer.toString();    }        public static String bytesToHex(byte[] b, int off, int len) {StringBuffer buf = new StringBuffer();for (int j=0; j<len; j++)buf.append(byteToHex(b[off+j]));return buf.toString();}public static String byteToHex(byte b) {char[] a = { hexDigit[(b >> 4) & 0x0f], hexDigit[b & 0x0f] };return forDigits(new String(a));}public static String forDigits(String val){switch (val.length() ){case 1:return "000"+val;case 2:return "00"+val;case 3:return "0"+val;case 4:return ""+val;default:return val;}}

وشكرا لك أخي العيافي على كل حال ...

سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولاحول ولا قوة إلا بالله

get-one-91.gif

الخبــــــرة هي مـــــــــــا تحصل عليه عندمــــا لا تحصل على ما تريده....

#4

هل من الممكن ان تشاركنا الكود تبعك ؟ الله يجزيك كل خير

#5

الكود يحول النص الى Hex String ، فاذا كان لديك نص مكون من 100 بايت  فهذا يعني ان الناتج سوف يكون 200 بايت بعد تحويلها للهكس (لأن اي بايت يرمز ب 2 هكس) .. اي الزياده سوف تكون الضعف.

 

يمكنك ان تستخدم Base64 وسوف تحصل على نص اقل من الذي يخرجه لك ال hex ، حيث لكل 3 بايت من المدخل سوف تحصل 4 بايت مخرج، فاذا كان النص طوله 100 بايت سوف تحصل على نص بطول 133 بايت بترميز Base64.

 

طبعاً هذا في حالة كان الوسيط الذي يستلم منك ويرسل الرساله لا يدعم ال Unicode. فيمكنك استخدام ال Encoding السابقه (ك Hex وهي تضاعف الحجم مرتين، أو Base64 وهي تضاعف ولكن النسبه اقل من الهكس).

 

بالتوفيق،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

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

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

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

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

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