android - एंड्रॉइड जावा 8 में अपडेट के बाद गलत एन्कोडिंग में पाठ प्रदर्शित करता है




android-studio encoding (2)

मैंने अपनी परियोजना को एसडीके संस्करण 24 और जावा 8 में अपडेट किया है और एक अजीब एन्कोडिंग समस्या का सामना किया है।

कुछ अजीब कारणों से एंड्रॉइड मेरे हार्डकोड UTF-8 स्ट्रिंग्स को विंडोज -1251 के रूप में मानता है और इस प्रकार टेक्स्ट विकृत हो जाता है।

इस कदर:

यह वही है जो मैंने बदल दिया है:

compileSdkVersion 24
buildToolsVersion "24.0.2"

compileOptions {
    encoding = 'utf-8'
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

और मैंने जो कोशिश की है:

  • एंड्रॉइड स्टूडियो सेटिंग्स में बदल एन्कोडिंग
  • जोड़ा compileOptions.encoding = 'windows-1251' और compileOptions.encoding = 'utf-8'
  • जोड़ा गया सिस्टम चर JAVA_TOOL_OPTIONS: -Dfile.encoding = UTF8

अगर मैं वापस जावा 7 में लौटा तो सब ठीक है।

कोई विचार?


यह जैक कंपाइलर में एक बग है, इस पोस्ट को देखें

जैक डिफ़ॉल्ट वीएम एन्कोडिंग का उपयोग कर रहा है, जो खिड़कियों पर खिड़कियों -1252 है। इसलिए, आपके टेक्स्ट को UTF-8 साथ एन्कोड किया गया है और जैक कंपाइलर द्वारा windows-1252 साथ डिकोड किया गया है, और यही कारण है कि वे विकृत हो गए।

अब तक, Gradle Plugin डीकोड प्रारूप को सेट करने के लिए एपीआई का समर्थन नहीं करता है, इसलिए हमें इंतजार करना होगा ...


मैं विंडोज में एक ही मुद्दा था (लेकिन मैक ओएसएक्स नहीं)। यह पंक्ति मेरी समस्या को हल करती है (इसे अपने परियोजना के gradle.properties में डाल):

org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

ध्यान दें कि यह हिस्सा परिवर्तन एन्कोडिंग:

-Dfile.encoding=UTF-8




java-8