request.getParameter取textarea中文乱码问题
<%@ page language="java" import="java.util.*,java.sql.*" contentType="text/html" pageEncoding="UTF-8"%><%-- <%@ page contentType=text/html;charset=gbk" pageEncoding="utf-8" %> --%>
<%-- 定义常用函数 --%>
<%!
//得到一个数据库的连接
Connection getConnection() throws SQLException
{
//定义驱动程序
String DBDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";
//定义连接的数据库
String CONNSTR="jdbc:sqlserver://localhost:1433;DatabaseName=XDCTY";
String userName="sa";
String userPwd="wplmj9*";
try{
Class.forName(DBDRIVER);
}
catch(ClassNotFoundException ex)
{
ex.printStackTrace(System.err);
}
//return DriverManager.getConnection(CONNSTR,userName,userPwd);
return DriverManager.getConnection(CONNSTR,userName,userPwd);
}
//判断一个字符串是否为空
boolean isEmptyString(String str)
{
return str==null || str.length()==0||str.trim().length()==0;
}
%>
<html>
<head>
<%-- <meta http-equiv="content-type" content="text/html" pageEncoding="UTF-8"> --%>
<meta http-equiv="content-type" content="text/html" charset="UTF-8">
<title>资源宝(自定义查询)</title>
<style>
TD,INPUT,SELECT{FONT-SIZE:12px}
</style>
<script language="javascript" >
function checkvalue()
{
if(document.forms("main").sql.value.length==0)
{
alert("请输入要执行的SQL语句");
document.fors("main").sql.focus();
return false;
}
}
</script>
</head>
<body>
<center>
<h1>资源宝(自定义查询) </h1>
<p>
<!-- 显示输入框,供用户输入需要执行的SQL语句 -->
<table width="80%" border="22">
<tr>
<td>请输入要执行的SQL语句</td>
</tr>
<tr>
<form name="main" method="post" action="SqlWebBase.jsp"
onsubmit="return checkvalue();">
<td>
<textarea name=sqlA rows=15 cols=100></textarea>
</td>
<td valign="middle">
<input type="submit" value="执行"/>
</td>
</form>
</tr>
<tr>
<td>
<a href="http://localhost:8080/ZYB/ZybDate.jsp" target="_blank">资源宝数据展示</a>
</td>
<td>
<a href="http://localhost:8080/ZYB/MAP.jsp" target="_blank">资源宝(地图展示)</a>
</td>
</tr>
</table>
<hr>
<%-- 接收用户的输入,显示查询的结果 --%>
<%
//获得用户输入的SQL语句——就是下面这两行错误。
String sql=request.getParameter("sqlA");
sql=new String(sql.getBytes("ISO-8859-1"),"UTF-8");
//sql = new String(sql.getBytes("iso-8859-1"),"UTF-8");
// String sql = (request.getParameter("sqlA"),"UTF-8");
if(!isEmptyString(sql))
{
out.println("您所执行的SQL语句为:"+sql+"<br>");
Connection conn=null;
Statement st=null;
ResultSet rs=null;
try
{
conn=getConnection();
st=conn.createStatement();
if(st.execute(sql))
{
//执行结果为ResultSet()
rs=st.getResultSet();
//得到ResultSet的列数目
ResultSetMetaData rsmd=rs.getMetaData(); ///得到结果集的结构信息,比如字段数、字段名等
int nColumnCount=rsmd.getColumnCount(); //返回字段个数
out.println("您的查询结果为:<br>");
out.println("<table width=\"90%\"border=\"1\">");
out.print("<tr>");
for(int i=1;i<=nColumnCount;i++)
{
out.println("<td><b>"+rsmd.getColumnName(i)+"</b></td>"); //getColumnName得到列名
}
out.println("</tr>");
while(rs.next())
{
out.println("<tr>");
for(int i=1;i<=nColumnCount;i++)
{
out.println("<td>"+rs.getString(i) +"</td>");
}
out.println("</tr>");
}
}
else
{
//执行结果为正数
out.println("更新记录的数目为:"+st.getUpdateCount());
}
}
catch(SQLException ex)
{
out.println(ex);
}
finally
{
//关闭、释放资源
try
{
if(rs!=null)
rs.close();
}catch(Exception ex){}
try{
if(st !=null)
st.close();
}
catch(Exception ex){}
try{
if(conn !=null)
conn.close();
}
catch(Exception ex){}
}
}
%>
</center>
</body>
</html>
————————本人在server.xml中配置了 URIEncoding="utf-8",如下配置:
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
之前调试是可以的,但今天再用发现request.getParameter取textarea里面的中文时,中文是乱码问题