在我一个项目中,当我使用下列语句
String typeid = request.getParameter(
"typeid");
String content =
request.getParameter("content");
String sqlQuery =
"insert into smscontent(typeid, content) values('";
sqlQuery += typeid;
sqlQuery +=
"', /"";
sqlQuery += content;
sqlQuery +=
"/")";
进行数据插入时,发现在数据库中的汉字都变成了乱码(发送请求的Url为:http://localhost:8080/MySMS/SubmitSMS.jsp?typeid=2&content=%E6%B5%B7%E5%A4%A7%E5%B8%88),一看原来是自己没有对URL进行解码,所以,使用下面代码进行解码:
String content =
new String(request.getParameter("content").getBytes("ISO-8859-1"),"utf-8");
可是尽管这样,写入到数据库的数据还是乱码!问题出在数据库连接时没有指定编码!
因此将数据库连接代码:
sqlConn = java.sql.DriverManager.getConnection(
"jdbc:mysql://" + host+ "/"+ database, user,pass);
替换为:
sqlConn = java.sql.DriverManager.getConnection(
"jdbc:mysql://" + host+ "/"+ database + "?useUnicode=true&characterEncoding=utf-8",user,pass);
数据插入成功!
另外需要指出的是,我在数据库中指定的编码是utf-8,所以这里连接时也是使用characterEncoding=utf-8。这里需要针对不同的编码选用对应的类型!