كيف يمكنني تحويل سلسلة إلى UTF-8 في Android؟
-
02-10-2019 - |
سؤال
أنا أستخدم محلل 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