日期:2014-05-18  浏览次数:20744 次

无法向数据库中写入中文,也无法从数据库中读出中文
在用JBuilder+tomcat4.1+jdk1.4+mysql4.1.22,我用的是lookup方式连接数据库,数据库驱动为mysqldriver,因为要做一个数据上传的功能,即将用户所提交的问题上传到数据库中,如果只是上传英文没有问题,可是上传到中文的的时候可以在我设计的接收servlet里得到上传的中文,可是中文却无法写入数据库中,数据库的连接语句为jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk,使用了GBK的过滤器,网页也是GBK的,数据库的数据存储格式也是GBK的,我在网上找了好多,可是提供的解决方案无非是过滤器,然后字符串类型转换,然后就是统一编码,我几乎所有的方法都试过了,可是从页面上读入的中文写入数据库中就是??,而我自己手动写入数据库中的中文字符,我用的是mysqlfront写入的,从数据库中读出来也都是??,一个字符对应一个?,没有出现乱码。我没有试过将所有的都改为UTF-8类型的,主要是觉得所有的编码类型都是用GBK,应该没有问题。想请教,我到底是什么问题,这个问题该如何解决。

------解决方案--------------------
你的数据库应该不是gbk编码,你把数据库编码改成jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk里面用到的编码应该没问题了~~

不过,推荐你都使用utf-8编码,包括页面和开发环境,这样可以最大程度的减少乱码问题~
------解决方案--------------------
帮顶一个

BTW: 如果使用UTF-8编码, 则Tomcat需要设置Filter过滤器, 网上有可以搜索下
------解决方案--------------------
我现在也很迷茫,也遇到了乱码。关注。
------解决方案--------------------
中文问题,用过滤器:

解决web开发中的中文问题。.
http://www.blogjava.net/rickhunter/articles/33571.html

你的是tomcat4.1,就不需要修改tomcat的server.xml文件中URIEncoding。
------解决方案--------------------
数据库编码的问题
------解决方案--------------------
编码问题,同意一楼
------解决方案--------------------
mysql 数据库编码设置成 utf-8
数据库连接编码也要指定成utf-8
jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf-8
------解决方案--------------------
mysql使用最新的,支持gb2312
使用下列命令可改变默认字符集
alter database dbname charater set gb2312;
用下列查看;
show create database[table] dbname;

另外在MYSQL控制端可以用这个命令:charset gb2312;来实现命令中可以输入中文;
在页面中,使用下列数函:
String temp=request.getParameter( "title ");
temp=new String(temp.getBytes( "gb2312 "), "gb2312 ");//
可以实现中文;
------解决方案--------------------
同意 :daniel_kaka(卡卡) 和 huohoo()

帮顶~

------解决方案--------------------
utf-8
------解决方案--------------------
我以前也遇到过这样的问题,这是一高手给的解答
很受用
现在把原贴,贴里你看看,应该就是这个问题

你是不是要问乱码的问题:
首先我们先了解一下问题的原因。一般情况在在每个JSP页的头部都有这样一条语句:
<% page contentType= "text/html; charset=gb2312 " %> 这条语句决定了此页面使用GB2312编码形式,而在数据库中一般用的是iso-8859-1字符集存储数据. 而Java程序在处理字符时默认采用统一的ISO-8859-1字符集(体现Java国际化思想),所以在添加数据时,默认的字符集编码是iso- 8859-1,而页面采用的是GB2312,所以就出现乱码问题。为解决此问题应在存储的时候把GB2312换转成iso-8859-1。有此时候在读出时也会出现乱码,那么只需反过来就可以了,把iso-8859-1转换成GB2312。
具体实例归纳了以下几点,也许会对大家有一些帮助。
1、在建立JSP页面时应该注意在jsp页面的头部加入一下代码
<% page contentType= "text/html; charset=gb2312 " %>
此方法是解决JSP页面显示时的乱码。
2、有时还需在HTML代码中的 <head> </head> 中加入这句
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
3、在bean中用的是iso-8859-1编码,在jsp中一般用GB2312编码,处理此类乱码问题如下
String str=new String(strName.getBytes(“iso-8859-1”),”GB2312”);
具体用到此方法的地方为,当提交表单到bean(bean的功能是存储数据到数据库)表单提交后,数据库中存入的数据确变成了????,因此在调用bean 之前应对编码进行转换,方法:String str=new String(request.getParameter().getBytes(“iso-8859-1”),”GB2312”);
这样,存入数据库的数据库的数据就可见了。
4、对于页面间的参数传递也可以用这个方法来处理乱码问题:
public String getStr(String str)
{
try
{
String temp_p=str;
byte[] temp_t=temp_p.getBytes( "ISO8859-1 ");
String temp=new String(temp_t);