用JAVA/JSP做开发很久了,也见过许多朋友做过,有很大一部分用的是MYSQL的数据库,现在MYSQL数据库版本5.0及以上的都已经被用的很广泛了,但一直有一个问题,使刚入门的朋友费劲心思.就是JSP连接MYSQL5数据库的时候的一些中文问题.于是网络上也出现了很多相关的帖子.由些大家对MYSQL5数据库的配制文件MY.INI也有了些了解.甚至一些朋友就直接问:你们的MYSQL是什么编码的?你们的TOMCAT是什么样的编码,可能不是很规范的问法,但说明了编码问题的确影响了大家的使用.
下面的讲解是在MYSQL5.0.18,TOMCAT5.0.28,驱动为mysql-connector-java-3.2.0-alpha-bin.jar及以上版本的情况下测试的
JSP连接数据库的乱码问题,分两部分来看
1 数据库中是不是乱码?
我们需要保证数据库保存的不是"?????"形式的乱码,如何保证呢?
我们在管理MYSQL数据库的时候,需要用一个客户端,无论你用MYSQL-FRONT,EMS SQL Manager for MySQL,还是MYSQL命令行,这些都是客户端,也是程序连接了数据库,我们现在用客户端EMS SQL Manager for MySQL连接数据库,连接的时候一定要设置客户端字符集为GBK或者GB2312,这样你才能知道数据库里面是不是乱码.这一编码设置很重要,不然,就算数据库里是中文,你看到的还是乱码
这样连接后,我们看下我们做测试的表格,里面的汉字就是正常的,这个时候也可以直接在上面的记录中进入中文的修改
若这里没有选择编码的话,一般默认的就是UTF8的了,连接后再看这个表格,就会出现乱码
而这个时候就会出现不能插入中文的问题,若您插入中文的话,就会出现下列错误
这个时候大家什么不要误解,不是不能插入中文,也不是你插入的字符太长,
更改下连接编码就OK了.下面是这个表格的SQL语句
CREATE TABLE `test` (
`name` varchar(100) default NULL,
`adesc` varchar(100) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
二.程序连接数据时,也要设置好连接时候的编码,JSP连接MYSQL数据库时候,有个URL参数,jdbc:mysql://localhost:3307/sssdb?user=demoUser&password=demoPwd&useUnicode=true&characterEncoding=UTF-8,在这里需要设置成UTF-8,
下面是连接数据库的程序代码
<%@ page contentType="text/html;charset=GB2312" language="java"%>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<%
out.println("您的数据库某表格中的内容如下<br>");
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url ="jdbc:mysql://localhost:3307/sssdb?user=demoUser&password=demoPwd&useUnicode=true&characterEncoding=UTF-8";
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {
out.println("第一个字段内容:<font color=red>"+rs.getString(1)+"</font> 第二个字段内容:<font color=red>"+rs.getString(2)+"</font><br>");
}
out.print("数据库操作成功,恭喜你");
sql = "insert into test (name,adesc) values ('中文','汉字')";
stmt.execute(sql);
rs.close();
stmt.close();
conn.close();
}
catch(Exception e){
System.out.println("数据库连接不成功"+e.toString());
}
%>
分享到:
相关推荐
mysql中文乱码处理.docx
mysql数据库内容处理关于中文乱码的问题
C++操作MariaDB和MySql中文乱码或无法处理中文的解决办法
MySQL写入中文乱码之处理character
这是我积累的关于mysql的数据乱码的一写经验,有兴趣的可以看看
解决PHP+mysql处理中文乱码的独家方案
MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业...
MySQL写入中文乱码之处理character
MYSQL使用UTF8中文乱码处理方法.docx
JDBC连接mysql处理中文时乱码解决办法详解 近日,整合的项目需要跟一个比较老版本的mysql服务器连接,使用navicat查看,发现此mysql服务器貌似没有设置默认编码,而且从操作此mysql的部分php文件看,应该是使用的gb...
Ofbiz 与MYSQL配置的中文问题及 ecommerce相关设置 Lookup字段的乱码处理 Get方法中文乱码解决办法 日期的表示乱码处理
mysql 优化以及 中文乱码处理问题。不错的东东。
Jsp输出中文的乱码问题,获取表单提交的数据时的中文乱码问题,url中的中文问题,数据库中采取的编码方式不同于utf-8怎么办
mysql乱码处理,MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程式(例如php)的连线语系设定问题 强烈建议使用...
MYSQL使用UTF8中文乱码终极处理方法.docx
本文主要是解决python2.7在查询mysql时产生中文乱码的处理方法,非常的有用,亲测可行,推荐给大家
中文乱码问题 当我第一次接触mysql,首先让我难受的是mysql的乱码问题,百度上也有许多有关的解决方案,不过作为亲身受害者,我想很有必要贴出我的心声: 1.关于mysql的字符集处理 mysql在标识数据时采取二进制字符...
在这里记录了nodejs过程中的一些乱码情况,这里的乱码主要是由于网页的编码方式与nodejs的默认解码方式...原因是nodejs默认处理字符是utf8,而mysql默认是latin1,毕竟是欧洲人开发的数据库。分析如下 命令show var