jsp数据库中文乱码处理
2017-05-27 00:08
483 查看
从服务器中JSP文件到浏览器显示页面的步骤为:
服务器JSP------>>(<%@ page pageEncoding="GBK"%>告诉服务器JSP文件本身编码)服务器Servlet
------>>(<%@ page contentType="text/html; charset=GBK" %>告诉out输出流,输出内容的类型是html,并且内容编码是GBK)服务器HTML文件
------>>(<meta http-equiv="Content-Type" content="text/html; charset=GBK">告诉浏览器,接受到的这个文件是html类型的,并且文件内容的编码是GBK)浏览器HTML文件
------>>浏览器解析并显示接收的文件
二、JSP中存在数据库操作的情况下编码问题
JSP编译为Servlet后,数据库操作是在执行Servlet时进行的。
执行insert语句时,Servlet(就是一个.java文件)中的中文会插入到数据库中,首先要设置好本身java页面的编码为GBK,在eclipse中这样设置:
Window--Preference...--General--Workspace 下设置默认的encoding为GBK。这样就相当于声明了在数据库命令行中输入的中文为GBK编码的。其次保证被操 作的database和table的编码都为GBK,这样做:在新建一个database后,设置这个database的编码为GBK,即执行这条语句----
alter database 数据库名 default character set 'GBK' ;
在创建table的时候声明----charset='GBK';
经过这两步后就能保证插入到数据库表中的中文不出现乱码了。
执行select语句时,既然数据库表中没有中文乱码,那么在Servlet中执行select语句从表中拿出来的中文也就不会有乱码,从而,从out输出流一直到浏览器中
显示也就不会出现中文乱码。
最后总结:
当JSP出现中文乱码时,按一下步骤检查:
1、检查JSP文件的“三处”
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
2、检查database的默认字符集是否为GBK: show variables like '%char%' ;
3、检查table的默认字符集是否为GBK: show table status from 数据库名 like '%表名%' ;
4、检查表中字段(column)的默认字符集是否为GBK:show full columns from 表名;
5、在以上三步中,如果出现字符集不为GBK,则应删除(先备份),再重新创建并设置默认字符集GBK;(我是直接在navicat软件修改字符集属性de)
数据库的表:
运行结果:
服务器JSP------>>(<%@ page pageEncoding="GBK"%>告诉服务器JSP文件本身编码)服务器Servlet
------>>(<%@ page contentType="text/html; charset=GBK" %>告诉out输出流,输出内容的类型是html,并且内容编码是GBK)服务器HTML文件
------>>(<meta http-equiv="Content-Type" content="text/html; charset=GBK">告诉浏览器,接受到的这个文件是html类型的,并且文件内容的编码是GBK)浏览器HTML文件
------>>浏览器解析并显示接收的文件
二、JSP中存在数据库操作的情况下编码问题
JSP编译为Servlet后,数据库操作是在执行Servlet时进行的。
执行insert语句时,Servlet(就是一个.java文件)中的中文会插入到数据库中,首先要设置好本身java页面的编码为GBK,在eclipse中这样设置:
Window--Preference...--General--Workspace 下设置默认的encoding为GBK。这样就相当于声明了在数据库命令行中输入的中文为GBK编码的。其次保证被操 作的database和table的编码都为GBK,这样做:在新建一个database后,设置这个database的编码为GBK,即执行这条语句----
alter database 数据库名 default character set 'GBK' ;
在创建table的时候声明----charset='GBK';
经过这两步后就能保证插入到数据库表中的中文不出现乱码了。
执行select语句时,既然数据库表中没有中文乱码,那么在Servlet中执行select语句从表中拿出来的中文也就不会有乱码,从而,从out输出流一直到浏览器中
显示也就不会出现中文乱码。
最后总结:
当JSP出现中文乱码时,按一下步骤检查:
1、检查JSP文件的“三处”
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
2、检查database的默认字符集是否为GBK: show variables like '%char%' ;
3、检查table的默认字符集是否为GBK: show table status from 数据库名 like '%表名%' ;
4、检查表中字段(column)的默认字符集是否为GBK:show full columns from 表名;
5、在以上三步中,如果出现字符集不为GBK,则应删除(先备份),再重新创建并设置默认字符集GBK;(我是直接在navicat软件修改字符集属性de)
<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="gbk" import = "java.sql.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <title>Insert title here</title> </head> <body> <%!ResultSet rs = null; %> <p align = "center" >登记宠物信息</p> <table width="700" border="1" align="center" bordercolor="#000000" bgcolor="#CCCCCC"> <tr> <th scope="col">Animal ID</th> <th scope="col">Animal 类型</th> <th scope="col">Animal 名字</th> <th scope="col">Animal 主人</th> <th scope="col">Animal 生日</th> <th scope="col">Animal 描述信息</th> </tr> <% Connection conn = null; Statement stmt = null; String url = "jdbc:mysql://localhost:3306/animalInfo"; String user = "root"; String passw = "123456"; try{ Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, user, passw); stmt = conn.createStatement(); rs= stmt.executeQuery("select * from animalInfo"); while(rs.next()){ %> <tr bgcolor="#DDDDDD"> <td bgcolor="#DDDDDD"> <div align="center"><%=rs.getString("ID")%></div> </td> <td bgcolor="#DDDDDD"> <div align="center"><%=rs.getString("Ani_Type")%></div> </td> <td bgcolor="#DDDDDD"> <div align="center"><%=rs.getString("Ani_Name")%></div> </td> <td bgcolor="#DDDDDD"> <div align="center"><%=rs.getString("Ani_Owner")%></div> </td> <td bgcolor="#DDDDDD"> <div align="center"><%=rs.getString("Ani_Birthday")%></div> </td> <td bgcolor="#DDDDDD"> <div align="center"><%=rs.getString("Ani_Description")%></div> </td> </tr> <% } rs.close(); stmt.close(); conn.close(); }catch(Exception e){ e.printStackTrace(); } %> </table> </body> </html>
数据库的表:
运行结果:
相关文章推荐
- jsp中不同提交方式的中文乱码处理方法及数据库乱码处理方法
- JSP get 请求 Tomcat 服务器 插入数据到数据库中文乱码处理
- jsp编程手记---处理jsp和mysql中文乱码!
- JSP中文乱码处理
- jsp配置fckeditor2.6以及中文乱码处理
- JSP XMLHttpRequest动态无刷新及其中文乱码处理
- JSP中文乱码处理
- 使用JSP开发应用程序时的编码(中文等乱码)问题的建议解决方案(包括接受request和数据库操作)
- JSP处理中文参数乱码
- jsp中文乱码处理总结
- 完整的解决oracle乱码shell处理(当每日导入数据库是英文字符集但需要导入中文字符集并且显示中文)
- jsp读取数据库中文乱码问题
- JSP中文乱码处理(过滤器)
- JSP中文乱码处理(转载)
- JSP页面显示乱码二、表单提交中文时出现乱码三、数据库连
- Tomcat 中 jsp 中文乱码显示处理解决方案
- 常见字符集简介 数据库以及jsp中文乱码问题以及Struts 中文乱码问题 Filter解决
- 使用JSP开发应用程序时的编码(中文等乱码)问题的建议解决方案(包括接受request和数据库操作)
- JSP中文乱码处理
- JSP处理中文参数乱码