JSP--(二)从入门到放弃

来源:互联网 发布:全国地图软件下载 编辑:程序博客网 时间:2024/05/20 08:25

表达提交的中文出现乱码的问题

用post 提交表单信息时,出现中文乱码问题

具体实例:这是一个初始界面,里面的form 表单提交两个信息:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Hello</title></head><body><center><form action="getParanmeter.jsp" method="post"><table><tr><td>姓名</td><td><input type="text" name="name" value="" /></td></tr><tr><td>城市</td><td><input type="text" name="city" value="" /></td></tr><tr><td><input type="submit" value="提交" /></td><td><input type="reset" value="重置" /></td> </table></form></center></body></html>






实际效果:




表单信息提交到对应的 jsp 文件进行处理

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><center><%String name = request.getParameter("name");String city = request.getParameter("city");if(name != null && city != null){%><p>Welcome <%=name %> , 您所在的城市是  <%=city %> </p><%}else{%><p>Welcome to my City !</p><%} %></center></body></html>

但是此时提交的信息如果是中文,显示的时候会变成乱码例如:


变成上图的样子。

解决中文显示乱码的问题有三种方法:

1.在接受请求的页面中规定请求字符的编码代码,例如本例中只需要在 getParanmeter.jsp 中加上一句 request.setCharacterEncoding("utf-8");

2.在取得参数值后进行转码处理,通过转码将参数值转化为合适的字符集,例如本中可以将:

String name = request.getParameter("name");String city = request.getParameter("city");
改为:
String name = new String (request.getParameter("name").getBytes(ISO-8859-1"),"utf-8);String city = new String (request.getParameter("city").getBytes(ISO-8859-1"),"utf-8);;

3.通过编写一个Servlet 过滤器来解决中文乱码问题。

修改后:




1  2  方法虽然也可以解决乱码问题,但是增加了代码量而且可移植性低,方法 3 移植性强,并且可以通过配置过滤器解决所有的请求处理字符集的问题。





0 0
原创粉丝点击