• 0
JAVA FOR ALL

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

سؤال

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

 

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

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

 

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

 

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

 

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[i])));        }        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;}}

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

 

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

 

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

 

بالتوفيق،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .