android 按钮不显示某些汉字(unicode?)

android button doesn't display some kanji (unicode?)


一些汉字字符在按钮上输出为空格。该字符串是 utf-8,但我试过 utf-16,但没有用。我正在使用 button.setText 来设置值。我可以执行 setText,然后执行 getText,然后看到我得到了相同的字符。字符输出作品在 Log.i 中找到。我尝试将字体设置为 DroidSansJapanese.ttf 并认为默认字体不支持这些字符,但没有帮助。

我认为这可能是一个 unicode 问题,但不知道从哪里看。

下图显示了字符及其代码点。看起来 0xFFFF 以上的字符是问题所在。

这是我设置字体的方式:

jFont = Typeface.createFromAsset(
   getActivity().getAssets(), "fonts/DroidSansJapanese.ttf");

这是执行 setText 的适配器代码:

public View getView(int position, View convertView, ViewGroup parent) {
   Button button = (Button) convertView;
   KanjiInfo ki = getItem(position);
   if (ki.isChanged() || null == button) {
       button = new Button(context);
       button.setTypeface(jFont);
   }
   String s = ki.kanjiChar();
   String buttonText = String.format("%s:0x0%X", s, s.codePointAt(0));
   button.setText(buttonText);
   s = button.getText().toString();
   Log.i(logTag, String.format("position=%d, s=\"%s\", codepoint=0x%08X",
       position, s, s.codePointAt(0)));

   ...

Log.i 的编辑输出如下:

position=42, s="齩:0x09F69", codepoint=0x00009F69
position=43, s=":0x0233E4", codepoint=0x000233E4
position=44, s=":0x028A1E", codepoint=0x00028A1E

我在这上面花了几天时间,但我没有想法。任何想法将不胜感激。

I tried setting the font to DroidSansJapanese.ttf and thinking that the characters weren't supported by the default font and that didn't help.

是的,看起来 U+233E4 和 U+28A1E 也是 not included by DroidSansJapanese,因为它不包含基本多语言平面之外的任何内容。

拥有它们的字体包括 Takao Gothic 和 Ming Li U。