سؤال

عندما أقوم بتشغيل Midlet الخاص بي مع مجموعة أدوات Java Wireless ، تعمل Midlet بشكل صحيح ، ولكن عندما تحاول تحليل ملعب Textfield ، يحدث الخطأ التالي ؛

java.lang.RuntimeException: IOException reading reader invalid first byte 10010111
    at com.sun.cldc.i18n.Helper.byteToCharArray(+228)
    at com.sun.cldc.i18n.Helper.byteToCharArray(+9)
    at java.lang.String.<init>(+7)
    at z.a(+219)
    at z.a(+103)
    at DP4JPhone.a(+74)
    at DP4JPhone.a(+115)
    at DP4JPhone.commandAction(+120)
    at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+282)
    at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10)
    at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
    at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
    at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+186)
    at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+57)

ما المشكلة؟

أنا أستخدم JWT 2.5.2_01

هل كانت مفيدة؟

المحلول

تم حل المشكلة.

كما ذكر ماكدويل من قبل ، كانت المشكلة حول ترميز الإعدادات. أفضل طريقة للتغلب على هذه المشكلة هي إعلان تشفير المعلومات من WTK.

ضمن دليل العمل الخاص بك ، ابحث عن ملف ktools.properties ('workdir wtklib ktools.properties' أو 'workdir wtklib linux ktools.properties "كما هو الحال على جهاز بلدي). وأضف الأسطر التالية:

microedition.encoding= *encoding*

لترميز ASCII:

microedition.encoding=ISO8859_1

هذا سيؤدي المهمة (:

نصائح أخرى

أعتقد أن ذلك لأنك إما:

  • باستخدام String(byte[]) مُنشئ (يجب تجنب هذا المُنشئ عمومًا)
  • باستخدام String(byte[], String) مُنشئ بشكل غير صحيح

في كلتا الحالتين ، سوف تقوم بفك تشفير بيانات البايت إلى بيانات الأحرف باستخدام الترميز الخاطئ ، وهو ترميز حيث قيمة البايت 10010111 غير قانوني (على الأقل ، كبايت أول).

أي تحويل من byte البيانات إلى char ستشمل البيانات (مثل إنشاء سلسلة) تحويل البيانات من "بعض الترميز الآخر" إلى UTF-16. تحتاج إلى معرفة وتحديد ما "بعض الترميز الآخر" هو قبل إجراء هذا التحول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top