JSP写入mysql数据库乱码问题



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&amp;characterEncoding=UTF-8 ,

如下所示:

jdbc:mysql://10.246.18.132:3306/wzpconfig?useUnicode=true&amp;characterEncoding=UTF-8 

你可能感兴趣的:(java,数据库,jsp)