

我正在开发一个安卓应用程序,我需要在TextView上显示一个特殊的UTF-16 in字符,比如Œ或Œ,或者我发布的图片中的那个。
我不明白为什么在努格特模拟器上,以及在棒棒糖和Marshmallow智能手机上,一切都是正确的。而在我个人的Android本体上,我只能看到":“字符而不是正确的字符。
(,在左边的图片中,那个字符不是一个正常的口音,我不是一个正常的I)
为什么我不能在智能手机上显示这些特殊字符呢?我该怎么做呢?
我调试了我的应用程序,并在我的TextView上正确地设置了字符;但是,我仍然不能正确地读取它们。
我的智能手机(最新软件升级版的OnePlus3)似乎无法读取UTF-16 me字符,但对我来说,面对这样的事情还是很奇怪的。
任何帮助都是非常感谢的,
祝您今天愉快。
UPDATE:我在智能手机上下载了https://play.google.com/store/apps/details?id=org.madore.android.unicodeMap,而且我的智能手机上似乎没有很多这些unicode字符,有什么方法可以修复它吗?我只需要安装一个更好的字体吗?
发布于 2017-03-05 15:09:54
我解决了我的问题,我就是这么做的。(和往常一样,也要感谢@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时,让我们假设我的单词列表。
我这样做的方式如下:
//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);就这样。
https://stackoverflow.com/questions/42600305
复制相似问题