这是jsp页面
String ShipName = new String(request.getParameter("ShipName").getBytes("ISO8859_1"),"UTF-8");
String project = new String(request.getParameter("project").getBytes("ISO8859_1"),"UTF-8");
int number = Integer.parseInt(request.getParameter("test"));
String name = (String)session.getAttribute("username");
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://192.168.3.228:3305/YuDetect";
String username = "bigdaddy";
String password = "senya@2018";
Connection conn = DriverManager.getConnection(url,username,password);
String isExit = "select * from TestResult where ShipName = '"+ShipName+"' and DetectItem = '"+project+"'";
PreparedStatement pstmt = conn.prepareStatement(isExit);
ResultSet rs = pstmt.executeQuery();
if(rs.next()){
out.print("该数据已存在,请不要重复添加!");
}else{
String sql = "insert into TestResult(ShipName,DetectItem,Val_detect,Detector) values(?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,ShipName);
ps.setString(2,project);
ps.setInt(3,number);
ps.setString(4,name);
int row = ps.executeUpdate();
if(row > 0){
out.print("成功添加数据!");
}
ps.close();
conn.close();
}
}catch(Exception e){
out.print("数据添加失败!");
e.printStackTrace();
}
这是mysql数据库的字符集
现在可以确定的是,传到jsp页面的数据里没有乱码,“ShipName”可以正常显示中文,我觉得关键的问题在于往数据库里添加的时候出了编码问题,但是我数据库的编码格式也是utf-8(UTF-8和UTF8mb4都试过)结果都是
想问问还有没有什么解决方法
造成中文乱码的原因有:
1.如果你用的是SSM,那么你看web.xml里边是否配置了中文乱码处理
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
CharacterEncodingFilter
/*
2.还有可能表单提交时 ,以post方式提交 tomat也需要配置中文乱码
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
3. 还有就是 数据库的问题 在安装mysql数据库时可以选择字符集 为UTF-8 如果没有选择 也可能出现中文乱码问题
tomcat的service.xml加 URIEncoding="UTF-8" 如下所示
楼主,是ISO-8859-1吧
mysql数据库默认编码latin,所以你输入的UTF-8会乱码。你在数据库my.ini配置文件里面把编码改为UTF-8就行了
可以在Tomcat中的server.xml中配置UTF-8
1.数据库连接必须指定编码,即&characterEncoding=utf8
2.如果get方式提交,例如tomcat容器需要connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
3.jsp页面上指定好编码,没必要ISO8859_1转utf8,即response.setContentType("text/html; charset=UTF-8");
request.setCharacterEncoding("UTF-8");
在数据库的url后面添加参数characterEncoding=utf8,
把GBK改成UTF-8试试
直接在jsp中加编码的设置试试,(先不在连数据库的里面加编码设置)
类似
<%@ page contentType="text/html;charset=gb2312"%>
String ShipName = java.net.URLEncoder.encode("测试", "UTF-8");
你把所有的编码都统一改成utf-8就好了
从页面提交的方式,是以post方式提交?如果不是,有可能会出现乱码。出现乱码的原因:1、tomcat设置编码和页面以及项目编码不一致 2、数据库设置编码不一致
java里的编码格式是否和数据库的编码一致。你先确定是页面传后台出乱码还是数据存数据库出现了乱码。
走一下断点,在存到数据库里之前看看是否乱码,如果不乱码就是数据库设置问题,乱码就是前台传的问题,设置一下相应的
数据库的字段的字符集,应该直接是utf8而不是utf8mb4吧?
为什么我的在浏览器显示我的int row = ps.executeUpdate();错误警告求解