首先是2段代码
x.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<body>
<form name="form1" method="post" action="xx.jsp">
<input type="text" name="a">
<input type="submit" name="Submit" value="提交">
</form>
<p> </p>
</body>
</html>
xx.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<body>
${ param.a}
</body>
</html>
很简单 在xx.jsp中显示x.jsp中的内容 测试1:在x.jsp中输入 "大家" 点击后 在xx.jsp 显示的为乱码 如果输入英文 可以正确显示解决测试 :
1. 在xx.jsp中加入 代码块
request.setCharsetEncoding("GB2312"); 可以正确显示2. 在xx.jsp中加入 代码块
利用 new String(param.a.getBytes(),"GB2312"); 可以正确显示 3. 利用jstl <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
在body下输入 <fmt:requestEncoding value="GB2312" /> 可以通过 (觉得这个和第1个道理是一样的)
测试 2 :
下面 将 x.jsp 修改 将form的提交方式改成 get<form name="form1" method="get" action="xx.jsp"> 在x.jsp中输入 "大家" 点击后 在xx.jsp 显示的为乱码 如果输入英文 可以正确显示
利用测试1中 3中方法 不能解决 ..测试 3 :
在地址输入http://127.0.0.1:8080/Demo/xx.jxp?a=你好
显示乱码 用测试1中解决方法不能解决测试2 和测试3 到现在我也没有一个办法来解决
自己总结的结论 : 通过post可以避免字符乱码问题 为request设置编码就可以
但用get方法时候 出现乱码错误
和get方法一样的是 利用url重写 也会出现乱码错误不知道这是什么原因 希望大虾们能够帮我解答 一下
另外 对于乱码 有没有一个一劳永逸的办法呢?
x.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<body>
<form name="form1" method="post" action="xx.jsp">
<input type="text" name="a">
<input type="submit" name="Submit" value="提交">
</form>
<p> </p>
</body>
</html>
xx.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<body>
${ param.a}
</body>
</html>
很简单 在xx.jsp中显示x.jsp中的内容 测试1:在x.jsp中输入 "大家" 点击后 在xx.jsp 显示的为乱码 如果输入英文 可以正确显示解决测试 :
1. 在xx.jsp中加入 代码块
request.setCharsetEncoding("GB2312"); 可以正确显示2. 在xx.jsp中加入 代码块
利用 new String(param.a.getBytes(),"GB2312"); 可以正确显示 3. 利用jstl <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
在body下输入 <fmt:requestEncoding value="GB2312" /> 可以通过 (觉得这个和第1个道理是一样的)
测试 2 :
下面 将 x.jsp 修改 将form的提交方式改成 get<form name="form1" method="get" action="xx.jsp"> 在x.jsp中输入 "大家" 点击后 在xx.jsp 显示的为乱码 如果输入英文 可以正确显示
利用测试1中 3中方法 不能解决 ..测试 3 :
在地址输入http://127.0.0.1:8080/Demo/xx.jxp?a=你好
显示乱码 用测试1中解决方法不能解决测试2 和测试3 到现在我也没有一个办法来解决
自己总结的结论 : 通过post可以避免字符乱码问题 为request设置编码就可以
但用get方法时候 出现乱码错误
和get方法一样的是 利用url重写 也会出现乱码错误不知道这是什么原因 希望大虾们能够帮我解答 一下
另外 对于乱码 有没有一个一劳永逸的办法呢?
1.就是按照"GB2312 -> UTF-8 -> ISO8859-1"倒着来。new String(param.a.getBytes("ISO8859-1"), "UTF-8");这就可以显示正常。
2.对服务器默认的URL解码方法进行设置,譬如tomcat,将"ISO8859-1"设置为"UTF-8",具体参考具体服务器的帮助文档。
使用过滤器.
我blog中的第二种方法
http://blog.csdn.net/caoyinghui1986/archive/2008/03/25/2216198.aspx
在我的 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<body>
${ param.a}
</body>
</html>
中输入
http://127.0.0.1:8080/Demo/x.jsp?a=你好
还是出现乱码 继续在线等
而不是utf-8则可以正常显示
不明白 UTF-8不是中文解码最稳定最好的吗?
是不是都认为这是一个小问题了?
请你们做个测试
代码如下
x.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<body>
${ param.a}
</body>
</html> 你能够让http://127.0.0.1:8080/Demo/x.jsp?a="你好"
输入正确的值吗?