jsp和mysql数据库之间,读写中文字符时,容易出现乱码,困扰了好长时间,今天把解决方法写下了,希望可以帮到众网友!
解决方法:
1.在jsp网页头部中加上<%@ page language="java" pageEncoding="UTF-8"%>
2.在网页正文加上<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">,确保页面可以显示中文。
3.在通过request.getParameter,/request.getAttribute函数取得到的字符串,有余tomcat内置的编码特性,所取到的字符串是ISO-8859-1编码,所以需要把取得的字符串改成UTF-8
或者GBK编码,为了适应其他字符,这里选择通用的UTF-8编码。
String getStr = request.getPatameter("name"); //iso-8859-1编码
byte[] bStr = getStr.getByte("is0-8859-1");
getStr = new String(bStr,"UTF-8");
OR
String getStr = new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8");
此时取得的字符就是中文字符,可以答应出来确认无误。
注意:在进行写数据库的时候,可以直接通过getParameter取得iso-8859-1编码,然后构造sql语句,最后把sql语句转变成UTF-8编码,这样可以省掉很多不必要的操作。
for example:
name=request.getParameter("name");
sex=request.getParameter("sex");
String sql = "insert into user values('name'+",'"+sex');";
sql = new String(sql.getBytes("iso-8859-1"),"utf-8");
db.updateQuery(sql);
4.如果能正确读取中文字符,但无法写入字符时时乱码,可以修改数据库的连接字符串。
在连接字符串后面加上?useUnicode=true&characterEncoding=UTF-8 ,
如下所示:
jdbc:mysql://10.246.18.132:3306/wzpconfig?useUnicode=true&characterEncoding=UTF-8