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方法封装的,第二个是自己手动拼接成的。

更多相关文章

  1. Android:使用webview上传文件(支持相册和拍照) .
  2. mnn android 收集
  3. 封装Retrofit,RXJAVA,okhttp网络请求的工具
  4. Android布局文件.xml中的自定义属性(结合封装的自定义View)
  5. android 监听app进入后台以及从后台进入前台
  6. java 封装解析 Json数据。
  7. [Android]调用系统相册获取图片
  8. 下载管理器类的封装(观察者模式)
  9. Android(安卓)ViewPager实现相册

随机推荐

  1. 学习Google的战略布局...
  2. Android实现多条Toast快速显示(强制中止上
  3. 白底黑字!Android浅色状态栏黑色字体模式
  4. Android(安卓)圆角圆形ImageView(超简单
  5. 转载 解决在PC上无法连接adb interface的
  6. uni-app打包程序 Hbuilder X 用自有证书
  7. Android(安卓)任务栈与启动模式
  8. android调用相应的应用市场进行评价功能
  9. Android中的绘制机制
  10. Android(安卓)SurfaceFlinger VSync流程