jsp页面对mysql中的汉字进行搜索
希望做到在文本框中输入内容,提交后从数据库读取出与输入内容相同的值下面这段代码输入英文时正常运行,但是中文由于编码问题搜索不到,不知如何改正最好能解释一下编码的原理,谢谢...
希望做到在文本框中输入内容,提交后从数据库读取出与输入内容相同的值
下面这段代码输入英文时正常运行,但是中文由于编码问题搜索不到,不知如何改正
最好能解释一下编码的原理,谢谢,搜索了好多网页了还是没有明白
-----------------------------------------------------------------
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'Read.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
Connection con;
Statement sql;
ResultSet rs;
String s=request.getParameter("search");
String sqlString;
if(s==null){
sqlString="select * from user";
}
else{
sqlString="select * from user where uname='"+s+"'";
}
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e) {
out.print("找不到类");
}
try{
con = DriverManager
.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=1234&useUnicode=true&characterEncoding=GBK");
sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs=sql.executeQuery(sqlString);
while(rs.next())
{
out.print(rs.getString("UNAME")+"<br>");
}
}catch (SQLException e1) {
out.println("false");
}
%>
<form action="Read.jsp">
<input type="text" name="search"/>
<button onclick="submit" >search</button>
</form>
</body>
</html> 展开
下面这段代码输入英文时正常运行,但是中文由于编码问题搜索不到,不知如何改正
最好能解释一下编码的原理,谢谢,搜索了好多网页了还是没有明白
-----------------------------------------------------------------
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'Read.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
Connection con;
Statement sql;
ResultSet rs;
String s=request.getParameter("search");
String sqlString;
if(s==null){
sqlString="select * from user";
}
else{
sqlString="select * from user where uname='"+s+"'";
}
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e) {
out.print("找不到类");
}
try{
con = DriverManager
.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=1234&useUnicode=true&characterEncoding=GBK");
sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs=sql.executeQuery(sqlString);
while(rs.next())
{
out.print(rs.getString("UNAME")+"<br>");
}
}catch (SQLException e1) {
out.println("false");
}
%>
<form action="Read.jsp">
<input type="text" name="search"/>
<button onclick="submit" >search</button>
</form>
</body>
</html> 展开
展开全部
<%
Connection con;
Statement sql;
ResultSet rs;
String s=request.getParameter("search");
String sqlString;
这是因为s取出来的是乱码,如是英文就不会乱码,
很简单的设置一下request中的参数编码就可以解决问题,
在使用request.getParameter("")之前加上一句
request.setCharacterEncoding("GBK");就行了,
本例中,在String s=request.getParameter("search");
之前加上request.setCharacterEncoding("GBK");
Connection con;
Statement sql;
ResultSet rs;
String s=request.getParameter("search");
String sqlString;
这是因为s取出来的是乱码,如是英文就不会乱码,
很简单的设置一下request中的参数编码就可以解决问题,
在使用request.getParameter("")之前加上一句
request.setCharacterEncoding("GBK");就行了,
本例中,在String s=request.getParameter("search");
之前加上request.setCharacterEncoding("GBK");
展开全部
("jdbc:mysql://localhost:3306/test?user=root&password=1234&useUnicode=true&characterEncoding=GBK");
后面改为:&useUnicode=true&characterEncoding=utf8
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gbk"%>
后面pageEncoding="gbk"%改成pageEncoding="UTF-8"%
参考下字符转换方法:
String str=new String(" ".getBytes("ISO8859-1"),"UTF-8");
如果还不行,就写个过滤器吧。
后面改为:&useUnicode=true&characterEncoding=utf8
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gbk"%>
后面pageEncoding="gbk"%改成pageEncoding="UTF-8"%
参考下字符转换方法:
String str=new String(" ".getBytes("ISO8859-1"),"UTF-8");
如果还不行,就写个过滤器吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对String s=request.getParameter("search");应该进行编码转换,
我想如果你在这句的下面写一行:System.out.println(s);输出的应该是乱码吧。
你可以在这行的下面加上一行:
s = new String(s.getBytes("iso-8859-1"),"gbk");
再试试。
如果还不行,请在问题中补充。
我想如果你在这句的下面写一行:System.out.println(s);输出的应该是乱码吧。
你可以在这行的下面加上一行:
s = new String(s.getBytes("iso-8859-1"),"gbk");
再试试。
如果还不行,请在问题中补充。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Mysql默认是拉丁编码。。 能显示才怪呢 而且Mysql没有GBK 只有UTF8 要显示只能修改mysql编码 或者jsp显示utf-8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你输入的汉字多半提交到服务器上就变成乱码了,把接收的内容转一下码,输出到控制台看一下。转码的方式很有多种,自己一个个慢慢试吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询