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