- 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