我正在开发一个Android应用程序,我需要在TextView上显示特殊的UTF-16LE字符,如æ或Œ,或者我发布的图片中的字符。
我无法理解为什么一切都在牛轧糖模拟器以及Lollipop和Marshmallow智能手机上正确显示,而在我的个人Android牛轧糖上我看不到这些字符,我只能看到“::”字符而不是正确的。
(小心,在左图中,'字符不是正常的重音,我不是正常的我)
为什么我无法在智能手机上显示这些特殊字符?我该如何处理?
我调试了我的应用程序,并在TextView上正确设置了字符;但是,我仍然无法正确阅读它们。
似乎我的智能手机(最新软件更新中的OnePlus3)无法读取UTF-16LE字符,但仍然,我真的很难面对这样的事情。
非常感谢任何帮助,
度过愉快的一天。
更新:我在智能手机上下载了https://play.google.com/store/apps/details?id=org.madore.android.unicodeMap,似乎我的智能手机上没有很多unicode字符,有没有办法解决它?我只需要安装更好的字体吗?
答案 0 :(得分:0)
我解决了我的问题,这就是我的所作所为。 (像往常一样,还要感谢我的队友@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);
这就是全部。