Ajax乱码

本文详细介绍了如何解决HTTP请求中的GET和POST方法产生的乱码问题,并提供了客户端和服务端的具体解决方案,包括不同编码方式下的处理策略。

1:文本的GET乱码解决

1:客户端发送数据,服务端的处理:

A:server.xml中配置URLEncoding="GBK";

B:软编码 username = new String(username.getBytes("ISO-8859-1"),"GBK");

2:客户端接收数据

服务端设置response.setCharaceterEncoding("GBK");

2:文本的POST乱码解决:

1:客户端发送数据,服务端的处理:

A:服务端使用UTF-8编码。request.setCharaceter("UTF-8");

B:服务端使用GBK编码

客户端要编码2次,
param = encodeURI(param);
param = encodeURI(param);
服务端解码2次

第一次:request.getParameter()中的GBK解码一次。

第二次:使用java.net.URLDecode.decode再解码一次。

2:客户端接收数据

服务端设置response.setCharaceterEncoding("GBK"); 或者UTF-8都可以。


3:XML的发送

XML的发送只有POST方式。没有GET方式。

1:客户端发送数据,服务端的处理:

A:服务端使用UTF-8编码。request.setCharaceter("UTF-8");

B:服务端使用GBK编码

客户端只需要将中文的字符进行编码一次,
var dept_1 = encodeURI("开发部");
var dept_2 = encodeURI("市场部");
var xmlContent = "<deptRoot>";
xmlContent = xmlContent + "<dept id=\"1\">";
xmlContent = xmlContent + "<deptname>"+dept_1+"</deptname>";
xmlContent = xmlContent + "<manager>admin</manager>";
xmlContent = xmlContent + "</dept>";


xmlContent = xmlContent + "<dept id=\"2\">";
xmlContent = xmlContent + "<deptname>"+dept_2+"</deptname>";
xmlContent = xmlContent + "<manager>test</manager>";
xmlContent = xmlContent + "</dept>";
xmlContent = xmlContent + "</deptRoot>";
服务端解码1次

request.getReader()本身并没有一次解码的操作,只是获取流的数据。因此,服务

端只需要解码一次。
String deptName = element.elementText("deptname");
deptName = java.net.URLDecoder.decode(deptName, "UTF-8");


4:返回XML数据的2种方式。

A:字符串拼凑

B:让DOM4J生成XML串, 然后发送给客户端,不需要设置XML的头部信息。

2:客户端接收数据

服务端设置response.setCharaceterEncoding("UTF-8"),直接返回XML即可。

服务端设置response.setCharaceterEncoding("GBK"),必须设置XML的头部信息。
xmlResult.append("<?xml version=\"1.0\" encoding=\"GBK\"?>");


转载于:https://www.cnblogs.com/ziq711/p/6295143.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值