首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Eula.java显示Unicode?

如何让Eula.java显示Unicode?
EN

Stack Overflow用户
提问于 2011-05-18 00:00:06
回答 2查看 459关注 0票数 2

来自code.google.com的Eula模块工作得很好,但由于某些原因,它不能显示Unicode字符(例如©)。

我知道AlertDialogs完全能够显示Unicode字符,因为我在应用程序的其他对话框中这样做。

我能在Eula的对话框和其他对话框之间找到的唯一区别是,Eula.java对话框从assets文件夹中的文本文件中获取字符串:

代码语言:javascript
复制
  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++中的所有Unicode字符,因此我只能怀疑InputStreamReaderBufferedReaderStringBuilder在将字符串从资产文件传输到AlertDialog的过程中对其进行了某些操作。

如何让Eula.java显示Unicode?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-18 00:04:56

将源数据的编码交给InputStreamReader;该类将数据转换为UTF16字符数据。

票数 4
EN

Stack Overflow用户

发布于 2011-05-18 00:07:29

在“普通”Java中,single-argument InputStreamReader constructor使用平台默认编码。

安卓已经定义了这个 different,他说

此构造函数将字符转换器设置为"file.encoding"属性中指定的编码,如果该属性不存在,则回退到ISO 8859_1 (ISO- back 1)。

因此,将file.encoding设置为资产中使用的编码(可能是UTF-8)可能正好可以完成此任务。

或者(如果您可以编辑它),只需将构造函数调用更改为two-argument version并以这种方式指定正确的编码即可。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6033726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档