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>
展开
 我来答
dj05305
2009-12-13
知道答主
回答量:4
采纳率:0%
帮助的人:7.1万
展开全部
<%
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");
woojie86
2009-12-08 · 超过11用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:25.2万
展开全部
("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");

如果还不行,就写个过滤器吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
x358011055
2009-12-12 · TA获得超过253个赞
知道小有建树答主
回答量:234
采纳率:55%
帮助的人:167万
展开全部
对String s=request.getParameter("search");应该进行编码转换,
我想如果你在这句的下面写一行:System.out.println(s);输出的应该是乱码吧。
你可以在这行的下面加上一行:
s = new String(s.getBytes("iso-8859-1"),"gbk");
再试试。
如果还不行,请在问题中补充。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangye6682002
2009-12-09 · TA获得超过905个赞
知道小有建树答主
回答量:637
采纳率:100%
帮助的人:299万
展开全部
Mysql默认是拉丁编码。。 能显示才怪呢 而且Mysql没有GBK 只有UTF8 要显示只能修改mysql编码 或者jsp显示utf-8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友547f5c0
2009-12-09 · 超过20用户采纳过TA的回答
知道答主
回答量:149
采纳率:0%
帮助的人:0
展开全部
你输入的汉字多半提交到服务器上就变成乱码了,把接收的内容转一下码,输出到控制台看一下。转码的方式很有多种,自己一个个慢慢试吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式