web 开发中遇到的乱码问题

首先要需要了解的是web容器默认编码是iso-8859-1,一个汉字占用两个字节,而在utf-8中一个汉字占用三个字节

1:Post提交乱码问题
表单的Post方式提交表单。
对于这种方式的请求,request.setCharacterEncoding("UTF-8")
一般在web.xml设置过滤器可以避免乱码的出现!
另外,struts的表单提交默认是采用post方式提交的,记得页面编码和容器编码要保持一致!


2:Get 提交乱码问题

2.1:页面链接中包含中文参数:
e.g: user.do?userName=<%=userName%>
使用java.net.URLEncoder.encode("中文","UTF-8");
可以避免乱码

2.2:表单使用get方式提交
自tomcat6.0之后,对于get提交方式,默认采用的是server.xml文件中的URIEncoding的编码方式,而不会采用过滤器中设置的编码。
另外,站点的server.xml,在里面的Connector标签里面的useBodyEncodingForURI="true" 这句的话告诉tomcat用页面的编码去处理post,推荐使用!

下下之策:
在jsp头部分,任何request和response被使用前,加上
request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-
8");
来避免中文乱码的问题!

另附:java:字符编码转换过程.doc

*********************************************************************************
在解析xml字符串的时候,总是乱码:

DOMDocument document = (DOMDocument)reader.read(new StringReader(responseText));
//Document document = reader.read(new ByteArrayInputStream(responseText.getBytes()));

后来使用StringReader来解析字符串,就没有乱码了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值