java web Servlet 连接数据库乱码


  
  
  • String userName = request.getParameter("userName");
String password = request.getParameter("password"); // // userName = new String(userName.getBytes("utf-8")); if (userName != null && password != null && userName.trim().length() > 0 && password.trim().length() > 0) { String sql = "SELECT userName, userpassword FROM users where userName=? and userPassword=?"; Connection cn = null; boolean check = false; try { Class.forName(driverName); cn = DriverManager.getConnection(url); PreparedStatement ps = cn.prepareStatement(sql); ps.setString(1, userName); ps.setString(2, password); ResultSet rs = ps.executeQuery(); if (rs.next()) { check = true; }

如上代码,当我们把其他页面的编码都设置为utf-8的时候,但是还是在查询的时候出现了乱码问题,如下

SELECT userName, userpassword FROM users where userName=' ??' and userPassword='123'

我们要实现的是:SELECT userName, userpassword FROM users where userName='李青' and userPassword='123'

这个时候我是这样解决的,把eclipse的环境默认编码也改为utf-8就解决了这个问题。

Window -> Preference -> Workspace -> Text file encoding


在编码的问题上,可以分为几个部分:

ps: 我在这里统一使用 utf-8 编码集。

1. jsp页面的编码

第一:是在 page 指令的 contentType属性的 charset的属性值应该设置为 utf-8;

第二:是在 html 的 head 标签里的 meta 的属性 content 的属性值应该设置为 utf-8;

第三:在 java 脚本里设置 request.setCharacterEncoding("utf-8");

2. servlet的编码

在 servlet 的配置文件里,你配置的连接数据库的 url 的值应该是这样的(我这里以mysql为例)jdbc:mysql://localhost:3306/shop?user=root

&useUnicode=true&characterEncoding=utf-8

ps: shop ----> 为数据库名称,

user ----> 为连接数据库的用户名,我这里的数据库没有密码,

& ----> 为 & 符号,因外 xml 不能识别 & 符号所以用 & 代替,

设置 characterEncoding 的值为 utf-8.

3. 数据库的编码

我是以 utf-8 的编码集来举例的,所以我创建 shop 数据库的时候就指定数据库的默认编码为 utf-8

ps: create database shop character set = utf8 ;

4. tomcat的编码

5. get 方式提交和 post 方式提交

当我们再次遇到类似的问题的时候,可以从以上几个方向去分析,从而解决编码问题。祝你们好运!

ps: 增加了部分关于乱码的问题的解答,进一步完善了乱码问题的解决方案。 ----2017 / 03 / 17

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值