JSP页面中输入中文数字结合的字符串查询数据库时候报错

sql="select*fromwzjlbookwherecarNum="苏E11111"这句在数据库中的时候能正常使用,但是在JSP页面中显示不出,”苏”这个字识别不出... sql="select * from wzjlbook where carNum="苏E11111"这句在数据库中的时候能正常使用,但是在JSP页面中显示不出,”苏”这个字识别不出。数据库用的Mysql字符集gb2312 -- GB2312 Simplified Chinese,JSP页面中 <%@ page contentType="text/html;charset=GB2312" %>也写了
还有String test = "苏E11111" ;
test = new String(test.getBytes("GBK"),"gb2312");
String sql="select * from wzjlbook where carNum='"+test+"'";用这种方法也无法查找
可是如果我把前面的苏字去掉的话,同时在数据库中也去掉苏字,能查询出结果的,希望大侠们能指点下
我对数据库修改改为11111就是把苏E去掉,然后在JSP搜索11111,能得到整行的内容显示,返回结果能显示中文,问题就是查询的时候带中文字符的话就报错,无法识别,是不是JSP页面上的问题?

我的问题不是一个JSP页面POST到另外一个页面出现乱码,我试过页面1POST给页面2,然后显示POST内容是正常的,我的问题是在JSP页面使用查询语句查询数据库的时候出错,发现字符无法识别,我用的是文本文档写的代码,然后改后缀名

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column
'?鼸12345' in 'where clause'
展开
 我来答
xiaohui249
2010-04-20 · 超过13用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:0
展开全部
首先确定你的数据库是支持中文的,同时数据库连接url是默认的编码ISO8859-1。
然后对test进行转码:test = new String(test.getBytes("GBK"),"ISO8859-1");GBK是当前页面编码方式。这样再查询,不会有错误的。
但是返回结果却是乱码,所以你得将结果转码。test = new String(test.getBytes("ISO8859-1"),"GBK");这个工作相当于上次转码的逆操作。
具体原理请查看链接:
http://blog.163.com/xiaohui_1123@126/blog/static/39805240201031495419966/
巫厹疏tZ
2010-04-21 · TA获得超过343个赞
知道小有建树答主
回答量:197
采纳率:0%
帮助的人:278万
展开全部
href跳转:

在JSP页面的头文件,这里设为:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

页面加密:encodeURI(encodeURI(x))在HTML页面用JS加密
如:
<script type="text/javascript">

function addCT(){
window.location.href=encodeURI(encodeURI("SerchServlet?name="+document.getElementById("name").value));
}

</script>

假设你输入查寻的text控件的id为name;

解码:URLDecoder.decode(x,"utf-8")在从map里取出来时解密

String name = URLDecoder.decode(request.getParameter("name"),"utf-8");

如果是post或get提交则:

设页面编码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

servlet:

String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");

这个id就可以读汉字了,不会出现乱码。

注意引包。有问题HI叫我。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
w1985g
2010-04-20 · TA获得超过1633个赞
知道小有建树答主
回答量:1190
采纳率:100%
帮助的人:1038万
展开全部
test = new String(test.getBytes("GBK"),"gb2312"); 这句是多余的吧,
你先在后台直接sql="select * from wzjlbook where carNum="苏E11111"看看能查到结果不,如果可以的话那就是jsp页面传过来的值编码方式需要转换了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓝色小幽灵
2010-04-20 · TA获得超过454个赞
知道小有建树答主
回答量:376
采纳率:0%
帮助的人:267万
展开全部
<%@ page contentType="text/html;charset=GBK" %>

String test=request.getParameter("你设置的那个参数");
test=new String(test.getBytes("ISO-8859-1"),"GBK");

保你通过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qqqiu1990
2010-04-20 · TA获得超过124个赞
知道答主
回答量:107
采纳率:0%
帮助的人:51万
展开全部
你可以试一下在jsp页面上加上
request.setcharacterencoding("utf-8")

response.setcharacterencoding("utf-8")
这个字符集,你也可以写成gb2312的!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式