2016-09-15 23 views
8

Tôi đã cập nhật dự án của mình lên SDK phiên bản 24 và Java 8 và gặp sự cố mã hóa lạ.Android hiển thị văn bản có mã hóa sai sau khi cập nhật lên Java 8

Bởi một số lý do lạ, Android xử lý các chuỗi UTF-8 được mã hóa cứng của tôi dưới dạng Windows-1251 và do đó văn bản bị cắt xén.

Như thế này:

enter image description here

Đây là những gì tôi đã thay đổi:

compileSdkVersion 24 
buildToolsVersion "24.0.2" 

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

Và những gì tôi đã cố gắng:

  • mã hóa thay đổi trong cài đặt Android Studio
  • đã thêm compileOptions.e ncoding = 'cửa sổ-1251' và compileOptions.encoding = 'utf-8'
  • hệ thống thêm JAVA_TOOL_OPTIONS biến: -Dfile.encoding = UTF8

Nếu tôi quay trở lại Java 7 mọi thứ đều ok.

Bất kỳ ý tưởng nào?

+1

đã bạn sử dụng trình biên dịch jack? –

+0

Tôi đã sử dụng jackOptions { bật đúng } trong build.gradle – FelisManulus

Trả lời

6

Đây là lỗi trong trình biên dịch Jack, hãy xem số post này.

Jack đã sử dụng mã hóa VM mặc định, mà trên cửa sổ là windows-1252. Vì vậy, văn bản của bạn được mã hóa với UTF-8 và được giải mã với windows-1252 bởi trình biên dịch Jack, và đây là lý do tại sao chúng bị cắt xén.

Cho đến nay, Gradle Plugin không hỗ trợ một API để thiết lập các định dạng giải mã, vì vậy chúng ta cần phải chờ ...

2

tôi đã cùng một vấn đề trong Windows (nhưng không phải Mac OSX). dòng này giải quyết vấn đề của tôi (đặt nó trong gradle.properties của dự án của bạn):

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

lưu ý rằng điều này mã hóa thay đổi phần:

-Dfile.encoding=UTF-8 
Các vấn đề liên quan