1. 中文返回前台页面会出现乱码
如果只在Servlet中设置上面的语句,则会出现如下情况(动态内容为乱码,静态内容正常)
req.setCharacterEncoding("utf-8");
所以在前台页面中也指定一下编码
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
这样前台页面就能显示正常了
2. 数据库查询中文乱码
数据库连接方式
private final String conn_url = "jdbc:mysql://localhost:3306/weixinmybatis"; Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(conn_url, "root", "root");
在使用PreparedStatement的setString(int, String)方法的时候,String如果是中文,就会变成?,导致查询失败
StringBuilder sql = new StringBuilder("select ID,COMMAND,DESCRIPTION,CONTENT from MESSAGE where 1=1"); sql.append("and COMMAND=?"); PreparedStatement ps = conn.prepareStatement(sql.toString()); ps.setString(1, "中文");
生成的查询语句就变成了
select ID,COMMAND,DESCRIPTION,CONTENT from MESSAGE where 1=1 and COMMAND=‘??‘
最终解决方案是在连接数据库的时候设置编码,即在conn_url中添加编码
private final String conn_url = "jdbc:mysql://localhost:3306/weixinmybatis?characterEncoding=utf8";
时间: 2024-10-12 23:04:25