【问题标题】:Characters UTF-16LE not showing on my Android Nougat我的 Android Nougat 上未显示字符 UTF-16LE
【发布时间】:2017-07-24 19:52:43
【问题描述】:

我正在开发一个 Android 应用程序,我需要在 TextView 上显示特殊的 UTF-16LE 字符,例如 æ 或 Œ,或者我发布的图片中的字符。

我不明白为什么在 Nougat Emulator 以及 Lollipop 和 Marshmallow 智能手机上都能正确显示所有内容,而在我的 Personal Android Nougat 上我看不到这些字符,我只能看到“: :”字符而不是正确的。

(小心,左图中那个'字符不是正常的重音,那个I不是正常的I)

为什么我的智能手机上不能显示这些特殊字符?我应该如何处理?

我调试了我的应用程序,并且在我的 TextView 上正确设置了字符;但是,我仍然无法正确阅读它们。

我的智能手机(最新软件更新中的 OnePlus3)似乎无法读取 UTF-16LE 字符,但是,面对这样的事情,我真的很奇怪。

任何帮助将不胜感激,

祝你有美好的一天。

更新:我在我的智能手机上下载了https://play.google.com/store/apps/details?id=org.madore.android.unicodeMap,但我的智能手机上似乎没有很多这些 un​​icode 字符,有没有办法修复它?我只需要安装更好的字体吗?

【问题讨论】:

    标签: android utf-8 character-encoding textview


    【解决方案1】:

    我解决了我的问题,这就是我所做的。 (和往常一样,还要感谢我的队友@Claffolo)

    我在我的 android 资产中导入了像 Gentium 这样的免费版权字体。 /资产/字体/

    在我的项目中,我导入了新字体并初始化了一个类似的变量

            Typeface plain = Typeface.createFromAsset(getActivity().getAssets(), "fonts/GentiumPlus-I.ttf");
    
        final TextView text_view = (TextView)view.findViewById(R.id.text_view);
        text_view.setTypeface(plain);
       text_view.setText("[String with special characters]");
    

    当我用所有特殊字符加载我的 ArrayList 时,假设我的 wordlist

    我是通过以下方式做到的:

    //Loading my Wordlist
    BufferedReader line_reader = new BufferedReader(new InputStreamReader(activity.getResources().openRawResource(R.raw.ipautf16le), Charset.forName("UTF-16LE")));
    
    String line;
    try {
        while ((line = line_reader.readLine()) != null) {
            WordList.add(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    Collections.sort(WordList);
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 1970-01-01
      • 2018-09-07
      • 2012-12-04
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 2017-02-28
      • 2014-08-14
      相关资源
      最近更新 更多