Android前后台传数据乱码,xml
在Android前后台通讯是可能要传数据,但是经常出现乱码,下面这个是我的经历,是后台向前台传数据的过程中出现乱码。
我看了一下书本上关于乱码的解决方法,大概说的就是要保持前后台的编码方式一样,按照书本上的方法,我把前后台的编码方式都改成utf-8,但是问题依旧没有解决。最后还是在朋友的帮助下解决了,是用流的方法解决的。下面对两个方法进行对照下。
在第一个方法中,在前台接收后台的xmlstring时,用的是
result = EntityUtils.toString(httpResponse.getEntity());
再用自己定义的解析器解析result
XmlAlbum xmlAlbum=new XmlAlbum();
android.util.Xml.parse(new ByteArrayInputStream(result.getBytes("utf-8")) , Encoding.UTF_8, xmlAlbum);
albumList=xmlAlbum.getAlbums();
结果在前台显示的时候出现乱码。
第二个方法是用流的形式接收的
InputStream stream = httpResponse.getEntity().getContent();
byte[] content = new byte[1024];
int length = 0;
while ((length = stream.read(content)) > 0) {
result = new String(content, 0, length, "UTF-8");
}
stream.close();
XmlAlbum xmlAlbum=new XmlAlbum();
android.util.Xml.parse(new ByteArrayInputStream(result.getBytes("utf-8")) , Encoding.UTF_8, xmlAlbum);
albumList=xmlAlbum.getAlbums();
这时候前后台就没有问题了,问题解决了。
在解决问题的过程中还出现了一个小插曲,我用w3c.dom方法在后台封装的xml传到前台,前台解析的时候出现了问题,调试发现是在xml文件中头中有这个一个属性standalone。最后用自己拼接的成的xml传到前台就没有问题了,不过这次写博客的时候,又重新用了一下w3c.dom的方法封装xml,前台还是用流接收的,结果没有出现问题,不知道是怎么个情况。还望大牛指教。先看下封装的效果吧
首先大家看下这个后台对数据进行封装后打印的效果
1.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<albums>
<album>
<name>相册一</name>
<id>1</id>
</album>
<album>
<name>相册二</name>
<id>2</id>
</album>
<album>
<name>相册三</name>
<id>3</id>
</album>
<album>
<name>相册四</name>
<id>4</id>
</album>
<album>
<name>相册五</name>
<id>5</id>
</album>
<album>
<name>相册六</name>
<id>6</id>
</album>
</albums>
2.
<?xml version="1.0" encoding="UTF-8" ?>
<albums>
<album>
<name>相册一</name>
<id>1</id>
</album>
<album>
<name>相册二</name>
<id>2</id>
</album>
<album>
<name>相册三</name>
<id>3</id>
</album>
<album>
<name>相册四</name>
<id>4</id>
</album>
<album>
<name>相册五</name>
<id>5</id>
</album>
<album>
<name>相册六</name>
<id>6</id>
</album>
</albums>
首先说下xml文档的几个属性:
xml:文档的声明语句
version:版本号
encoding:编码
standalone:是否自身验证,值 no 表示这个 XML 文档不是独立的而是依赖于外部所定义的一个 DTD. 值 yes 表示这个 XML 文档是自包含的(self-contained).
通过对比两个封装好的xml,大家很容易的发现,第二个封装成的xml没有standalone="no"。第一个是用自己博客文章中的方法封装的,用w3c.dom方法封装的,第二个是自己手动拼接成的。
更多相关文章
- Android:使用webview上传文件(支持相册和拍照) .
- mnn android 收集
- 封装Retrofit,RXJAVA,okhttp网络请求的工具
- Android布局文件.xml中的自定义属性(结合封装的自定义View)
- android 监听app进入后台以及从后台进入前台
- java 封装解析 Json数据。
- [Android]调用系统相册获取图片
- 下载管理器类的封装(观察者模式)
- Android(安卓)ViewPager实现相册