我下载XML,取出里面的中文字,打印就出现乱码 我从XML文件里面取出中文字,怎么让他显示不会出现乱码呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 EntityUtils.toString(XML内容,"UTF-8"); String xml=downloadXML("http://110.84.34.150:8080/mp3/resources.xml");String xml2=EntityUtils.toString(xml,"UTF-8");为什么不能这样子用呢 你把downloadXML这个方法的源码发上来帮你修改吧。 private void updateListView(){ //用户点击了更新列表按钮 //下载包含所有Mp3基本信息的xml文件 String xml=downloadXML("http://110.84.34.150:8080/mp3/resources.xml"); //对XML文件进行解析,并将解析的结果放置到Mp3Info对象当中,最后将这些Mp3Info对象放置到list当中。 mp3Infos=parse(xml); SimpleAdapter simpleAdapter=buildSimpleAdapter(mp3Infos); //将这个SimpleAdapter对象设置到ListActivity当中 setListAdapter(simpleAdapter); } private SimpleAdapter buildSimpleAdapter(List<Mp3Info> mp3Infos){ //生成一个list对象,并按照SimpleAdapter的标准,将mp3Infos当中的数据添加到list当中去。 List<HashMap<String,String>> list= new ArrayList<HashMap<String,String>>(); for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) { HashMap<String,String> map=new HashMap<String, String>(); Mp3Info mp3Info = (Mp3Info) iterator.next(); map.put("mp3_name",mp3Info.getMp3Name()); map.put("mp3_size",mp3Info.getMp3Size()); list.add(map); } //创建一个SimpleAdapter对象 SimpleAdapter simpleAdapter=new SimpleAdapter(this, list, R.layout.mp3info_item, new String[]{"mp3_name","mp3_size"}, new int[]{R.id.mp3_name,R.id.mp3_size}); return simpleAdapter; } private String downloadXML(String urlStr){ HttpDownloader httpDownloader=new HttpDownloader(); String result=httpDownloader.download(urlStr); return result; } //解析XML文件 private List<Mp3Info> parse(String xmlStr){ SAXParserFactory saxPFactory=SAXParserFactory.newInstance(); List<Mp3Info> infos=new ArrayList<Mp3Info>(); try{ XMLReader xmlReader=saxPFactory.newSAXParser().getXMLReader(); Mp3ListContentHandl mp3ListContentHandl=new Mp3ListContentHandl(infos); xmlReader.setContentHandler(mp3ListContentHandl); xmlReader .parse(new InputSource(new StringReader(xmlStr))); for (Iterator iterator = infos.iterator(); iterator.hasNext();) { Mp3Info mp3Info = (Mp3Info) iterator.next(); System.out.println(mp3Info); } }catch(Exception e){ e.printStackTrace(); } return infos; } private void updateListView(){ //用户点击了更新列表按钮 //下载包含所有Mp3基本信息的xml文件 String xml=downloadXML("http://110.84.34.150:8080/mp3/resources.xml"); //对XML文件进行解析,并将解析的结果放置到Mp3Info对象当中,最后将这些Mp3Info对象放置到list当中。 mp3Infos=parse(xml); SimpleAdapter simpleAdapter=buildSimpleAdapter(mp3Infos); //将这个SimpleAdapter对象设置到ListActivity当中 setListAdapter(simpleAdapter); } private SimpleAdapter buildSimpleAdapter(List<Mp3Info> mp3Infos){ //生成一个list对象,并按照SimpleAdapter的标准,将mp3Infos当中的数据添加到list当中去。 List<HashMap<String,String>> list= new ArrayList<HashMap<String,String>>(); for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) { HashMap<String,String> map=new HashMap<String, String>(); Mp3Info mp3Info = (Mp3Info) iterator.next(); map.put("mp3_name",mp3Info.getMp3Name()); map.put("mp3_size",mp3Info.getMp3Size()); list.add(map); } //创建一个SimpleAdapter对象 SimpleAdapter simpleAdapter=new SimpleAdapter(this, list, R.layout.mp3info_item, new String[]{"mp3_name","mp3_size"}, new int[]{R.id.mp3_name,R.id.mp3_size}); return simpleAdapter; } private String downloadXML(String urlStr){ HttpDownloader httpDownloader=new HttpDownloader(); String result=httpDownloader.download(urlStr); return result; } //解析XML文件 private List<Mp3Info> parse(String xmlStr){ SAXParserFactory saxPFactory=SAXParserFactory.newInstance(); List<Mp3Info> infos=new ArrayList<Mp3Info>(); try{ XMLReader xmlReader=saxPFactory.newSAXParser().getXMLReader(); Mp3ListContentHandl mp3ListContentHandl=new Mp3ListContentHandl(infos); xmlReader.setContentHandler(mp3ListContentHandl); xmlReader .parse(new InputSource(new StringReader(xmlStr))); for (Iterator iterator = infos.iterator(); iterator.hasNext();) { Mp3Info mp3Info = (Mp3Info) iterator.next(); System.out.println(mp3Info); } }catch(Exception e){ e.printStackTrace(); } return infos; } 在String xml=downloadXML("http://110.84.34.150:8080/mp3/resources.xml");后面加上try { xml = new String (xml.getBytes("ISO-8859-1"),"GBK"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); }看看。 是不是这个获取歌曲名称乱码?map.put("mp3_name",mp3Info.getMp3Name());把这段换成:try {map.put("mp3_name",new String (mp3Info.getMp3Name().getBytes("ISO-8859-1"),"GBK")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); }试试,这是乱码转换的一种方式,不一定能行。 还是转换不了这是我XML文件的开头<?xml version="1.0" encoding="ISO-8859-1"?> 改成UTF-8,我也试过了,还是乱码 准备开始学android,有些java基础,求推荐 android String.xml中msgid标记 如何计算Android的应用的耗电量? 如何实现GirdView点击略缩图跳转到新的activity显示大图(在imageview中) android手机软件开发 一个Android项目,其中的ant的build.xml不会写,求教 获取权限信息失败 有谁能帮忙推荐下Android+ssh开发案例的教程 安卓进行ntlm验证返回401 如何在子线程中查询数据库? Android中怎样设置ImageView的透明度? 改变gridview颜色
String xml2=EntityUtils.toString(xml,"UTF-8");
为什么不能这样子用呢
//用户点击了更新列表按钮
//下载包含所有Mp3基本信息的xml文件
String xml=downloadXML("http://110.84.34.150:8080/mp3/resources.xml");
//对XML文件进行解析,并将解析的结果放置到Mp3Info对象当中,最后将这些Mp3Info对象放置到list当中。
mp3Infos=parse(xml);
SimpleAdapter simpleAdapter=buildSimpleAdapter(mp3Infos);
//将这个SimpleAdapter对象设置到ListActivity当中
setListAdapter(simpleAdapter);
}
private SimpleAdapter buildSimpleAdapter(List<Mp3Info> mp3Infos){
//生成一个list对象,并按照SimpleAdapter的标准,将mp3Infos当中的数据添加到list当中去。
List<HashMap<String,String>> list= new ArrayList<HashMap<String,String>>();
for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) {
HashMap<String,String> map=new HashMap<String, String>();
Mp3Info mp3Info = (Mp3Info) iterator.next();
map.put("mp3_name",mp3Info.getMp3Name());
map.put("mp3_size",mp3Info.getMp3Size());
list.add(map);
}
//创建一个SimpleAdapter对象
SimpleAdapter simpleAdapter=new SimpleAdapter(this, list, R.layout.mp3info_item, new String[]{"mp3_name","mp3_size"}, new int[]{R.id.mp3_name,R.id.mp3_size});
return simpleAdapter;
}
private String downloadXML(String urlStr){
HttpDownloader httpDownloader=new HttpDownloader();
String result=httpDownloader.download(urlStr);
return result;
}
//解析XML文件
private List<Mp3Info> parse(String xmlStr){
SAXParserFactory saxPFactory=SAXParserFactory.newInstance();
List<Mp3Info> infos=new ArrayList<Mp3Info>();
try{
XMLReader xmlReader=saxPFactory.newSAXParser().getXMLReader();
Mp3ListContentHandl mp3ListContentHandl=new Mp3ListContentHandl(infos);
xmlReader.setContentHandler(mp3ListContentHandl);
xmlReader .parse(new InputSource(new StringReader(xmlStr)));
for (Iterator iterator = infos.iterator(); iterator.hasNext();) {
Mp3Info mp3Info = (Mp3Info) iterator.next();
System.out.println(mp3Info);
}
}catch(Exception e){
e.printStackTrace();
}
return infos;
}
//用户点击了更新列表按钮
//下载包含所有Mp3基本信息的xml文件
String xml=downloadXML("http://110.84.34.150:8080/mp3/resources.xml");
//对XML文件进行解析,并将解析的结果放置到Mp3Info对象当中,最后将这些Mp3Info对象放置到list当中。
mp3Infos=parse(xml);
SimpleAdapter simpleAdapter=buildSimpleAdapter(mp3Infos);
//将这个SimpleAdapter对象设置到ListActivity当中
setListAdapter(simpleAdapter);
}
private SimpleAdapter buildSimpleAdapter(List<Mp3Info> mp3Infos){
//生成一个list对象,并按照SimpleAdapter的标准,将mp3Infos当中的数据添加到list当中去。
List<HashMap<String,String>> list= new ArrayList<HashMap<String,String>>();
for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) {
HashMap<String,String> map=new HashMap<String, String>();
Mp3Info mp3Info = (Mp3Info) iterator.next();
map.put("mp3_name",mp3Info.getMp3Name());
map.put("mp3_size",mp3Info.getMp3Size());
list.add(map);
}
//创建一个SimpleAdapter对象
SimpleAdapter simpleAdapter=new SimpleAdapter(this, list, R.layout.mp3info_item, new String[]{"mp3_name","mp3_size"}, new int[]{R.id.mp3_name,R.id.mp3_size});
return simpleAdapter;
}
private String downloadXML(String urlStr){
HttpDownloader httpDownloader=new HttpDownloader();
String result=httpDownloader.download(urlStr);
return result;
}
//解析XML文件
private List<Mp3Info> parse(String xmlStr){
SAXParserFactory saxPFactory=SAXParserFactory.newInstance();
List<Mp3Info> infos=new ArrayList<Mp3Info>();
try{
XMLReader xmlReader=saxPFactory.newSAXParser().getXMLReader();
Mp3ListContentHandl mp3ListContentHandl=new Mp3ListContentHandl(infos);
xmlReader.setContentHandler(mp3ListContentHandl);
xmlReader .parse(new InputSource(new StringReader(xmlStr)));
for (Iterator iterator = infos.iterator(); iterator.hasNext();) {
Mp3Info mp3Info = (Mp3Info) iterator.next();
System.out.println(mp3Info);
}
}catch(Exception e){
e.printStackTrace();
}
return infos;
}
String xml=downloadXML("http://110.84.34.150:8080/mp3/resources.xml");
后面加上
try {
xml = new String (xml.getBytes("ISO-8859-1"),"GBK");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
看看。
map.put("mp3_name",mp3Info.getMp3Name());把这段换成:try {
map.put("mp3_name",new String (mp3Info.getMp3Name().getBytes("ISO-8859-1"),"GBK"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}试试,这是乱码转换的一种方式,不一定能行。
这是我XML文件的开头<?xml version="1.0" encoding="ISO-8859-1"?>