jsp 与javascript组合乱码
在JSP做一个项目的时候要用到JavaScript.JavaScript输出的表单提交数字,字符可以显示而中文就会出现乱码.上网找了好久就是解决不了.急急急!!!
下面是我做的一个示例.test_index.jsp显示一个提交按钮,点击按钮显示一个文本框和一个按钮然后点击按钮提交进入test.jsp显示中文乱码.各位大侠帮帮忙!!急!!
1.test_index.jsp
<%@ page contentType= "text/html; charset=gb2312 " language= "java " import= "java.sql.* "
errorPage= " " %>
<SCRIPT language= "JavaScript ">
function Test()
{
document.write( " <table cellspacing=0 cellpadding=0 align=center valign=top bgcolor=#BABAFA border=0> ");
document.write( " <form method=post action=test.jsp> ");
document.write( " <tr valign=top align=left> <td > ");
document.write( " <input type=text name=test_name size=8> ");
document.write( " <input type=submit name=submit value=提 交> ");
document.write( " </td> </tr> </form> </table> ");
}
</SCRIPT>
<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
<title> 无标题文档 </title>
</head>
<body>
<input type= "submit " name= "Submit " value= "提交 " onClick= "javascript:Test() ">
</body>
</html>
2.test.jsp
<%@ page contentType= "text/html; charset=gb2312 " language= "java " import= "java.sql.* " errorPage= " " %>
<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
<title> 无标题文档 </title>
</head>
<body>
<% String test_name = new String(request.getParameter( "test_name ").getBytes( "ISO-8859-1 "), "gb2312 ");
out.print(test_name);
%>
</body>
</html>
------解决方案--------------------request.setCharacterEncoding( "UTF-8 ");
------解决方案--------------------从这句 <%@ page contentType= "text/html; charset=gb2312 " language= "java " import= "java.sql.* " errorPage= " " %> 可以看出程序使用gb2312编码,所以转换时也应该转为gb2312编码,而不是UTF-8,要转UTF-8也得在页面也使用它的情况下。
所以你需要在页面中的 <%@ page contentType= "text/html; charset=gb2312 " language= "java " import= "java.sql.* " errorPage= " " %> 下面写个 <%request.setCharacterEncoding( "gb2312 ");%> ,不过它在TOMCAT 5下只对POST方法有效,GET方法还需要其他办法处理。
所以建议表单最好使用POST方法,你也可以考虑把request.setCharacterEncoding( "gb2312 ")写在filter里面