Android 在资源中显示unicode文本?

Android 在资源中显示unicode文本?,android,Android,我正在构建一个android应用程序,它使用*.txt文件构成资产。但是我的*.txt文件有一些unicode文本,我的手机无法显示它们。我能做什么?这是我的钳工课: public class PListHelper { public static String readQuizzesListFromAssets(Context context) { StringBuffer sb = new StringBuffer(); BufferedReade

我正在构建一个android应用程序,它使用*.txt文件构成资产。但是我的*.txt文件有一些unicode文本,我的手机无法显示它们。我能做什么?这是我的钳工课:

public class PListHelper {

    public static String readQuizzesListFromAssets(Context context) {
        StringBuffer sb = new StringBuffer();

        BufferedReader br=null;
        try {
             br = new BufferedReader(new InputStreamReader(context.getAssets().open("quizzesList.plist"))); 
            String temp;
            while ((temp = br.readLine()) != null)
                sb.append(temp);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                br.close(); // stop reading
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        Log.i("PListHelper", "input: "+sb.toString());

        return sb.toString();
    }


    public static String readConfigFromAssets(Context context) {
        StringBuffer sb = new StringBuffer();
        BufferedReader br=null;
        try {
             br = new BufferedReader(new InputStreamReader(context.getAssets().open("config.plist"))); 
            String temp;

            while ((temp = br.readLine()) != null)
                sb.append(temp);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                br.close(); // stop reading
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        Log.i("PListHelper", "input: "+sb.toString());

        return sb.toString();
    }


    //Parse Response
    public static ArrayList<Quiz> parseQuizzesPlist(String input){
        ArrayList<Quiz> listOfQuizzes = null;
        ArrayList<ATriviaQuestion> listOfQuestions = null;

        //parsing of response                       
        try{            
            //XMLPullParser
            XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(true);
            XmlPullParser xpp = factory.newPullParser();

            xpp.setInput(new StringReader(input));
            int eventType = xpp.getEventType();
            String tagName = null, tagData = ""; 

            listOfQuizzes = new ArrayList<Quiz>();
            Quiz quiz = null;
            ATriviaQuestion aTQuestion = null;

            ArrayList<String> options = null;
            boolean areQuestions = false; 
            boolean isName = false, isImageName = false, isDescription = false;
            boolean isQuestion = false, areOptions = false, isAnswer = false;

            while(eventType != XmlPullParser.END_DOCUMENT){
                if(eventType == XmlPullParser.START_DOCUMENT){
                    Log.i("PlistParser", "xmlpullparser:start document");
                    tagName = "";
                }else if(eventType == XmlPullParser.END_DOCUMENT){
                    Log.i("PlistParser", "xmlpullparser:end document");
                }else if(eventType == XmlPullParser.START_TAG){
                    tagName = xpp.getName();

                    if(tagName.equals("quiz")){             
                        quiz = new Quiz();
                    }else if(tagName.equals("questions")){                      
                        listOfQuestions = new ArrayList<ATriviaQuestion>();
                        areQuestions = true;
                    }else if(tagName.equals("question"))
                        aTQuestion = new ATriviaQuestion();
                    else if(tagName.equals("array")){
                        options = new ArrayList<String>();
                    }

                }else if(eventType == XmlPullParser.END_TAG){
                    tagName=xpp.getName();

                    if(tagName.equals("quiz")){             
                        listOfQuizzes.add(quiz);
                    }else if(tagName.equals("questions")){                      
                        quiz.setQuestions(listOfQuestions);
                        areQuestions = false;
                    }else if(tagName.equals("question"))
                        listOfQuestions.add(aTQuestion);
                    else if(tagName.equals("array")){
                        if(areOptions){
                            areOptions = false;
                            aTQuestion.SetOptions(options);
                        }
                    }

                    tagName = "";tagData = "";                  
                }else if(eventType == XmlPullParser.TEXT){
                    tagData = xpp.getText();

                    //parsing questions of a quiz
                    if(areQuestions){
                        if(tagName.equals("key")){
                            if(tagData.equals("Question")){
                                isQuestion = true;                      
                            }else if(tagData.equals("Options")){
                                areOptions = true;
                            }else if(tagData.equals("Answer")){
                                isAnswer = true;                        
                            }
                        }else if(tagName.equals("string")){
                            if(isQuestion)
                                aTQuestion.SetQuestion(tagData);
                            else if(areOptions)
                                options.add(tagData);                           

                            isQuestion = false;
                        }else if(tagName.equals("integer")){
                            if(isAnswer)
                                aTQuestion.SetAnswer(Integer.valueOf(tagData));

                            isAnswer = false;
                        }
                    }

                    //parsing a quiz item
                    if(tagName.equals("key")){
                        if(tagData.equals("Name")){
                            isName = true;                      
                        }else if(tagData.equals("Description")){
                            isDescription = true;
                        }else if(tagData.equals("ImageName")){
                            isImageName = true;                     
                        }
                    }else if(tagName.equals("string")){
                        if(isName)
                            quiz.setName(tagData);
                        else if(isDescription)
                            quiz.setDescription(tagData);
                        else if(isImageName)
                            quiz.setImageName(tagData);

                        isName = false; isDescription = false; isImageName = false;
                    }

                }

                eventType = xpp.nextToken();
            }   //eventType while ends          

        }catch(Exception ex){
            Log.i("PListHelper", "Parsing exception with message->"+ex.getMessage());
        }   

        Log.i("PListHelper", "quizzes size: " + listOfQuizzes.size());

        return listOfQuizzes;

    }

    //Parse Response
    public static Config parseConfigFile(String input){
        Config config = null;

        //parsing of response                       
        try{            
            //XMLPullParser
            XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(true);
            XmlPullParser xpp = factory.newPullParser();

            xpp.setInput(new StringReader(input));
            int eventType = xpp.getEventType();
            String tagName = null, tagData = ""; 

            config = new Config();
            boolean isTimeToAnswer = false, isPointsPerRemainingSecond = false, isPointsPerCorrectAnswer = false, isPointsPerWrongAnswer = false;

            while(eventType != XmlPullParser.END_DOCUMENT){
                if(eventType == XmlPullParser.START_DOCUMENT){
                    Log.i("PlistParser", "xmlpullparser:start document");
                    tagName = "";
                }else if(eventType == XmlPullParser.END_DOCUMENT){
                    Log.i("PlistParser", "xmlpullparser:end document");
                }else if(eventType == XmlPullParser.START_TAG){
                    tagName = xpp.getName();

                    if(tagName.equals("dict"))              
                        ;

                }else if(eventType == XmlPullParser.END_TAG){
                    tagName=xpp.getName();

                    if(tagName.equals("dict"))              
                        ;

                    tagName = "";tagData = "";                  
                }else if(eventType == XmlPullParser.TEXT){
                    tagData = xpp.getText();

                    //parsing config items
                    if(tagName.equals("key")){
                        if(tagData.equals("timeToAnswer"))              
                            isTimeToAnswer = true;
                        else if(tagData.equals("pointsPerRemainingSecond"))                     
                            isPointsPerRemainingSecond = true;
                        else if(tagData.equals("pointsPerCorrectAnswer"))
                            isPointsPerCorrectAnswer = true;
                        else if(tagData.equals("pointsPerWrongAnswer"))
                            isPointsPerWrongAnswer = true;

                    }else if(tagName.equals("integer")){
                        if(isTimeToAnswer)
                            config.SetTimeToAnswer(Integer.valueOf(tagData));
                        else if(isPointsPerRemainingSecond)
                            config.SetPointsPerRemainingSecond(Integer.valueOf(tagData));
                        else if(isPointsPerCorrectAnswer)
                            config.SetPointsPerCorrectAnswer(Integer.valueOf(tagData));
                        else if(isPointsPerWrongAnswer)
                            config.SetPointsPerWrongAnswer(Integer.valueOf(tagData));

                        isTimeToAnswer = false; isPointsPerRemainingSecond = false; isPointsPerCorrectAnswer = false; isPointsPerWrongAnswer = false;
                    }

                }

                eventType = xpp.nextToken();
            }   //eventType while ends          

        }catch(Exception ex){
            Log.i("PListHelper", "Parsing exception with message->"+ex.getMessage());
        }   

        return config;

    }
public类密码器{
公共静态字符串readQuizzesListFromAssets(上下文){
StringBuffer sb=新的StringBuffer();
BufferedReader br=null;
试一试{
br=新的BufferedReader(新的InputStreamReader(context.getAssets().open(“quizzesList.plist”));
字符串温度;
而((temp=br.readLine())!=null)
某人(临时);
}捕获(IOE异常){
e、 printStackTrace();
}最后{
试一试{
br.close();//停止读取
}捕获(IOEX异常){
例如printStackTrace();
}
}
Log.i(“PListHelper”,“input:+sb.toString());
使某人返回字符串();
}
公共静态字符串readConfigFromAssets(上下文){
StringBuffer sb=新的StringBuffer();
BufferedReader br=null;
试一试{
br=新的BufferedReader(新的InputStreamReader(context.getAssets().open(“config.plist”));
字符串温度;
而((temp=br.readLine())!=null)
某人(临时);
}捕获(IOE异常){
e、 printStackTrace();
}最后{
试一试{
br.close();//停止读取
}捕获(IOEX异常){
例如printStackTrace();
}
}
Log.i(“PListHelper”,“input:+sb.toString());
使某人返回字符串();
}
//解析响应
公共静态ArrayList parseQuizzesPlist(字符串输入){
ArrayList listOfQuizzes=null;
ArrayList listOfQuestions=null;
//解析响应
试试{
//XMLPullParser
XmlPullParserFactory工厂=XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp=factory.newPullParser();
setInput(新的StringReader(输入));
int eventType=xpp.getEventType();
字符串标记名=null,tagData=“”;
listOfQuizzes=newarraylist();
测验=null;
心房问题aTQuestion=null;
ArrayList选项=null;
布尔值=假;
布尔值isName=false,isImageName=false,isDescription=false;
布尔值isQuestion=false,areOptions=false,isAnswer=false;
while(eventType!=XmlPullParser.END_文档){
if(eventType==XmlPullParser.START\u文档){
Log.i(“PlistParser”、“xmlpullparser:start文档”);
标记名=”;
}else if(eventType==XmlPullParser.END_文档){
Log.i(“PlistParser”、“xmlpullparser:end document”);
}else if(eventType==XmlPullParser.START_标记){
标记名=xpp.getName();
如果(标记名.equals(“测验”){
测验=新测验();
}如果(标记名.equals(“问题”){
listOfQuestions=newArrayList();
问题=正确;
}else if(标记名.equals(“问题”))
aTQuestion=新的心房问题();
else if(标记名.equals(“数组”)){
选项=新的ArrayList();
}
}else if(eventType==XmlPullParser.END_标记){
标记名=xpp.getName();
如果(标记名.equals(“测验”){
测验列表。添加(测验);
}如果(标记名.equals(“问题”){
测验。设置问题(问题列表);
问题=错误;
}else if(标记名.equals(“问题”))
问题列表。添加(aTQuestion);
else if(标记名.equals(“数组”)){
如果(可选){
areOptions=false;
设置选项(选项);
}
}
标记名=”;标记数据=”;
}else if(eventType==XmlPullParser.TEXT){
tagData=xpp.getText();
//分析测验的问题
如果(问题){
if(标记名.equals(“键”)){
if(tagData.equals(“问题”)){
isQuestion=true;
}else if(tagData.equals(“选项”)){
arepoptions=true;
}else if(tagData.equals(“应答”)){
isAnswer=真;
}
}else if(标记名.equals(“字符串”)){
如果(问题)
aTQuestion.SetQuestion(标记数据);
否则如果(可选)
选项。添加(标记数据);
isQuestion=false;
}else if(标记名.equals(“整型”)){
如果(isAnswer)
aTQuestion.SetAnswer(Integer.valueOf(tagData));
isAnswer=假;
}
}
//解析测验项目
if(标记名.equals(“键”)){
if(tagData.equals(“名称”)){
isName=true;
}否则
br = new BufferedReader(new InputStreamReader(context.getAssets().open("quizzesList.plist"),"UTF-8"));