javaWeb中解决中文乱码问题
2015-10-04 10:46
549 查看
javaWeb中解决中文乱码问题。
网页传值主要有两种情况:
在接受请求参数之前设置请求编码即可,request.setCharacterEncoding("编码");
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
%>
方法一:
对接受到的请求参数进行转码,使用String name = new String(name.getBytes("默认编码"),"转换后的编码");
<%
String name = request.getParameter("name");
name = new String(name.getBytes("ISO-8859-1"),"UTF-8");//将接收到的name参数的编码转换为UTF-8编码
%>
方法二:
客户端用户提交数据之前,使用JS把用户要提交的中文值进行编码,然后再服务器端对接收到的值进行解码即可。
客户端编码:
<script>
function login(){
var loginForm = document.forms["loginForm"];
loginForm.name.value = encodeURI(loginForm.name.value);//对中文字符串进行编码
return true;
}
</script>
<form action="login-handler.jsp" name="loginForm" onsubmit="login()" method="get"></form>
服务端解码:
<%
String name = request.getParameter("name");
name = URLDecoder.decode(name, "UTF-8");
%>
注意:使用encodeURI对字符串进行一次编码,再提交表单时又对字符串进行了一次的编码,实际进行了两次编码。在使用URLDecoder.decode()进行解码时,实际上是对字符串进行两次解码。
客户端编码:
<script>
function a(){
var doc = document.getElementById("aa");
doc.href = "a-handler.jsp?info="+encodeURI(encodeURI("你好"));
}
</script>
<a href="" id="aa" onclick="a()">使用超链接传送中文参数</a>
服务端解码:
<%
String user = request.getParameter("info");
user = URLDecoder.decode(user, "UTF-8");
out.println(user);
%>
网页传值主要有两种情况:
1、使用form表单传值
使用form表单传值只要有两种方式:get和post(即:method="get/post",默认是get方式)1)解决使用post方式传递中文的乱码问题:
<form action="login-handler.jsp" method="post"></form>在接受请求参数之前设置请求编码即可,request.setCharacterEncoding("编码");
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
%>
2)解决使用get方式传递中文的乱码问题:(两种方法)
<form action="login-handler.jsp" method="get"></form>方法一:
对接受到的请求参数进行转码,使用String name = new String(name.getBytes("默认编码"),"转换后的编码");
<%
String name = request.getParameter("name");
name = new String(name.getBytes("ISO-8859-1"),"UTF-8");//将接收到的name参数的编码转换为UTF-8编码
%>
方法二:
客户端用户提交数据之前,使用JS把用户要提交的中文值进行编码,然后再服务器端对接收到的值进行解码即可。
客户端编码:
<script>
function login(){
var loginForm = document.forms["loginForm"];
loginForm.name.value = encodeURI(loginForm.name.value);//对中文字符串进行编码
return true;
}
</script>
<form action="login-handler.jsp" name="loginForm" onsubmit="login()" method="get"></form>
服务端解码:
<%
String name = request.getParameter("name");
name = URLDecoder.decode(name, "UTF-8");
%>
注意:使用encodeURI对字符串进行一次编码,再提交表单时又对字符串进行了一次的编码,实际进行了两次编码。在使用URLDecoder.decode()进行解码时,实际上是对字符串进行两次解码。
2、使用<a href=""></a>超链接的方式传值
在对a标签的href属性值编码时,要两次编码才能在服务端使用URLDecoder.decode()进行解码。客户端编码:
<script>
function a(){
var doc = document.getElementById("aa");
doc.href = "a-handler.jsp?info="+encodeURI(encodeURI("你好"));
}
</script>
<a href="" id="aa" onclick="a()">使用超链接传送中文参数</a>
服务端解码:
<%
String user = request.getParameter("info");
user = URLDecoder.decode(user, "UTF-8");
out.println(user);
%>
相关文章推荐
- spring mvc使用@InitBinder 标签对表单数据绑定
- java 在窗口中如何定义一个文本框类型的数组
- Java:String和Date、Timestamp之间的转换
- 一起学spring--我的第一个Spring程序,简单粗暴易懂
- java.lang.ClassNotFoundException: org.hibernate.boot.model.naming.ImplicitNamingStrategy
- spring原理
- Java中用户向系统传递参数的三种基本方式
- java笔试勘误
- Java获取当前时间
- Java解决算三角形个数的问题
- Java中的static关键字解析
- Spring MVC 常用Jar包官方下载地址(官方Maven仓库)
- 大龄屌丝自学笔记--Java零基础到菜鸟--023
- java命令中-d32和-d64的含义
- java.util.random中nextFloat()取值问题
- java.net.SocketException: Address family not supported by protocol family: connect
- java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0
- eclipse项目发布路径
- Win7 eclipse Hadoop Failed to set permissions of path
- Java中static变量作用和用法详解