Как я могу заставить Eula.java отображать Unicode? - PullRequest
2 голосов
/ 17 мая 2011

Модуль Eula из code.google.com отлично работает, но по какой-то причине не отображает символы Юникода (например, ©).

Я знаю, что AlertDialogs прекрасно способныотображение символов Unicode, потому что я делаю это в других диалоговых окнах моего приложения.

Единственное отличие, которое мне удалось найти между диалоговым окном Eula и другими, заключается в том, что диалоговое окно Eula.java получает свою строку из текстового файла впапка assets:

  private static CharSequence readEula(Activity activity) {
    BufferedReader in = null;
    try {
      in = new BufferedReader(new InputStreamReader(activity.getAssets().open(ASSET_EULA)));
      String line;
      StringBuilder buffer = new StringBuilder();
      while ((line = in.readLine()) != null)
        buffer.append(line).append('\n');
      return buffer;
    }
    catch (IOException e) {
      return "";
    }
    finally {
      closeStream(in);
    }
  }

Этот текстовый файл отображает все символы Юникода в Notepad ++, поэтому я могу только подозревать, InputStreamReader, BufferedReader или StringBuilder что-то делает со строкой на пути из активовфайл в AlertDialog.

Как я могу заставить Eula.java отображать Unicode?

Ответы [ 2 ]

4 голосов
/ 17 мая 2011

Дайте InputStreamReader кодировку исходных данных;этот класс транскодирует данные в символьные данные UTF-16.

2 голосов
/ 17 мая 2011

В "нормальной" Java конструктор с одним аргументом InputStreamReader использует кодировку платформы по умолчанию.

Android определил это немного отличается , говоря

Этот конструктор устанавливает для преобразователя символов кодировку, указанную в свойстве "file.encoding", и возвращается к ISO 8859_1 (ISO-Latin-1), если свойство не существует.

Таким образом, установка file.encoding на кодировку, используемую в активе (вероятно, UTF-8), может просто помочь.

В качестве альтернативы (если вы можете отредактировать его), просто измените вызов конструктора на версию с двумя аргументами и укажите правильную кодировку таким образом.

...