【问题标题】:How to display strange characters in Android如何在Android中显示奇怪的字符
【发布时间】:2013-09-27 11:45:06
【问题描述】:

有人能告诉我为什么奇怪的字符不会出现在 Android listView 中吗?

我有一个带有这个的文本文件

我得到了这个

这是我的代码

    ArrayList<String> list = new ArrayList<String>();
    InputStream inStream = getResources().openRawResource(R.raw.emoticons);
    InputStreamReader inputReader = null;


    if (inStream != null)
    {

        try {
            inputReader = new InputStreamReader(inStream, "UTF-8");
        }catch (UnsupportedEncodingException e){
            e.printStackTrace();
        }

        int c, i=0;
        //int i=0;
        char [] cb = new char[1];
        byte [] buf = new byte[100];
        String line = "";

        int ble = -1;

        try {
            ble = inputReader.read(cb, 0, 1);
        }catch (IOException e){
            e.printStackTrace();
        }

        while (ble > -1)
        {

            if(cb[0] == '\r' || cb[0] == '\n')
            {
                try{
                    line = new String(buf, 0, i, "UTF-8");
                }catch (UnsupportedEncodingException e){
                    e.printStackTrace();
                }

                i=0;
                list.add(line);
            }

            else
            {

                buf[i++] = (byte) cb[0];
            }

            try {
                ble = inputReader.read(cb, 0, 1);
            }catch (IOException e){
                e.printStackTrace();
            }

        }
    }



    String[] emoticons = list.toArray(new String[list.size()]);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, emoticons);
    listview.setAdapter(adapter);

【问题讨论】:

  • 您能解释一下您要做什么吗?这段代码真的很难理解。看起来您正在逐个字符地读取文件,然后将每个字符转换为一个字节?为什么?
  • @Teofilo 您只需将字体添加到您的项目中就可以了!!

标签: java android utf-8 ascii


【解决方案1】:

看起来您正在尝试逐行读取文件。一种方法是使用BufferedReader 类:

ArrayList<String> list = new ArrayList<String>();
InputStream inStream = getResources().openRawResource(R.raw.emoticons);
BufferedReader inputReader = null;

if (inStream != null)
{
    try {
        inputReader = new BufferedReader(new InputStreamReader(inStream, "UTF-8"));
        String line;
        while ((line = inputReader.readLine()) != null) {
            list.add(line);
        }
    // handle exceptions..
    } finally {
        if (inputReader != null) inputReader.close();
    }
}

String[] emoticons = list.toArray(new String[list.size()]);

【讨论】:

  • 耶!您的代码有效,但缺少一些字符,您能找出原因吗? img822.imageshack.us/img822/5056/vq74.png
  • 字符丢失是因为字体没有它们的字形。我不知道您是否/如何安装不同的字体。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
  • 2014-11-04
  • 2012-10-01
  • 2014-02-12
  • 2013-10-29
  • 1970-01-01
相关资源
最近更新 更多