سؤال

أنا أستخدم محلل HTML يسمى JSoup ، لتحميل ملفات HTML وتحليلها. المشكلة هي أن صفحة الويب التي أجريها مشفرة في ISO-8859-1 Charset أثناء استخدام Android UTF-8 التشفير(؟). هذا ينتج عنه بعض الشخصيات تظهر كعلامات استفهام.

حتى الآن أعتقد أنه يجب علي تحويل السلسلة إلى تنسيق UTF-8.

الآن لقد وجدت هذا الفصل يسمى charsetencoder في Android SDK ، والتي أعتقد أنها يمكن أن تساعدني. لكن لا يمكنني معرفة كيفية تنفيذها في الممارسة العملية ، لذلك أتساءل عما إذا كان بإمكانه الحصول على مساعدة من خلال مثال عملي.

تحديث: رمز لقراءة البيانات (JSoup)

url = new URL("http://www.example.com");
Document doc = Jsoup.parse(url, 4000);
هل كانت مفيدة؟

المحلول

يمكنك السماح لـ Android بالقيام بالعمل من خلال قراءة الصفحة في بايت [] ثم استخدام أساليب JSOUP لتحليل كائنات سلسلة.

لا تنس تحديد الترميز عند إنشاء السلسلة من البيانات من الخادم باستخدام السلسلة الصحيحة البناء.

نصائح أخرى

ترميزات البايت والسلاسل

public static void main(String[] args) {

      System.out.println(System.getProperty("file.encoding"));
      String original = new String("A" + "\u00ea" + "\u00f1"
                                 + "\u00fc" + "C");

      System.out.println("original = " + original);
      System.out.println();

      try {
          byte[] utf8Bytes = original.getBytes("UTF8");
          byte[] defaultBytes = original.getBytes();

          String roundTrip = new String(utf8Bytes, "UTF8");
          System.out.println("roundTrip = " + roundTrip);

          System.out.println();
          printBytes(utf8Bytes, "utf8Bytes");
          System.out.println();
          printBytes(defaultBytes, "defaultBytes");
      } catch (UnsupportedEncodingException e) {
          e.printStackTrace();
      }

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