安卓客户端用dom4j生成的带有汉字的xml文件,发送到Servlet页面解析出来中文是乱码,应该怎么处理??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓客户端用dom4j生成的带有汉字的xml文件,发送到Servlet页面解析出来中文是乱码,应该怎么处理??相关的知识,希望对你有一定的参考价值。

我在安卓客户端 用dom4j生成了一个xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1">
<username>i am a person</username>
<password>this is password</password>
<netname>sky</netname>
<introduce>who could know my world</introduce>
</user>
</users>
我直接把它以String的类型,用POST方式提交出去了
然后到服务器端用dom4j解析出来:

这是在Servlet端的代码:
XmlOperation op=new XmlOperation(); ArrayList<User> users=new ArrayList<User>(); InputStream is=request.getInputStream(); users=op.xmlToList(is); for(User user:users) String id=user.getId(); String username=user.getUsername(); String password=user.getPassword(); String netname=user.getNetname(); String introduce=user.getIntroduce();
System.out.println("解析出来ID是:"+id); System.out.println("解析出来的用户名是:"+username); System.out.println("解析出来的密码:"+password); System.out.println("解析出来的网名是:"+netname); System.out.println("解析出来的介绍是:"+introduce);
用dom4j解析xml代码不用贴了吧,就是XmlOpetation那个类
现在运行出来结果如下

可以看出来解析是正常结果!!
可是我要是在客户端把那些英文换成中文,就解析不了了,,好像乱码了,,,我应该怎么操作??

参考技术A 首先你要知道乱码问题肯定是两端的编码格式不一致导致的

我的建议是在生成的dom4j文件里加入中文,
2、如果servlet依旧正常解析,那么就是客户端接收返回的时候的乱码,你可以试着改客户端的编码格式
2、如果不正常解析,那么就是servlet的问题,servlet英文什么编码基本都一样的,所以要传中文试,不正常解析你就改servlet的setEncoding再试试
参考技术B 返回数据带有中文,获取返回时候需要这样
String response = EntityUntils.toString(entity,"utf-8") 加入编码格式参数
当然这是HttpClient方法与服务器交互

解析xml文件,如何动态的封装成一个java类

要看你的xml文件是什么格式,可以针对某个结构的xml文件封装一个解析类

如果不依赖xml文件的格式,只是封装操作xml的方法,这个网上一大堆,用dom4j或jdom都可以
参考技术A 用java反射

以上是关于安卓客户端用dom4j生成的带有汉字的xml文件,发送到Servlet页面解析出来中文是乱码,应该怎么处理??的主要内容,如果未能解决你的问题,请参考以下文章

用dom4j生成xml文件。以字符串输出的问题

怎么用dom4j 修改XML文件中的信息?

如何根据xml和schema文件生成java类(用程序实现)!

Java之dom4j的简单解析和生成xml的应用

dom4j生成xml文件

Java利用dom4j生成xml文件