又是菜鸟问题:选择哪一种编码,才能把汉字写入MySQL数据库? mysql的数据存放是按单字节的,你应该在insert前先转为ISO-8859-1。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也遇到过我是用jdbc over odbc就能写进去中文用jdbc for mysql就写不进去 我看了mysql支持的字符集,latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5 不行。转为ISO-8859-1插入的数据全变成???了。 现在好了。是转为iso-8859-1就好了。 public boolean UpdateField(ResultSet resultset, String FieldName, String FieldValue) { boolean Result = false; try { String str = new String(FieldValue.getBytes("GB2312"),"ISO-8859-1");//就是他。 System.out.println("Value: "+str); resultset.updateString(FieldName,str); Result = true; }catch(Exception e){ System.out.println(this.getClass()+"UpdateField()"+e.toString()); } return Result; } 不过。怪事情有出现了。现在读取、写入都正常了。可是我使用ResultSet.deleteRow()方法,无法删除数据!删除数据的方法: ResultSet rs; rs.deleteRow();无法删除的数据: >主关键字段值是汉字。 >如果关键字段值是英文字母可以用上面的方法删除。 >如果关键字段值是英文字母其他字段值是汉字,也可以删除。现象: 设定rs只打开了一条数据,在调用rs.deleteRow()方法后,立即调用rs.GetString(1),抛出SQL到了数据末尾的异常。证明删除成功。 于是设定Connection.autoCommit=false.在删除后手都提交,数据库仍然没有更新。请高手们再次指教。 谢谢rootwuyu(wuyu) 和楼上兄弟们的回答。 我的解决:webserver:tomcat 3.2db:MySQLjdbc driver:mm.MySQL JDBCIDE:JB61.jsp页面有<%@ page contentType="text/html; charset=GBK" %>2.jb6 project编码方式default(有系统决定)3.通过jsp页面提交的表单参数,在通过request.getParameter获得后,进行编码转换,代码片断:...String param = request.getParameter("param");try{ byte[] bytes = param.getBytes("iso-8859-1"); param = new String(bytes);}catch(Exception e){}4.然后再使用jdbc,对数据库update5.从数据读出数据,不用编码转换 mysql支持中文的,你不必非用ISO8859,要让mysql支持中文你需要:1. 在mysql配置文件中配置default charset:default-character-set = gbk2. 在jdbc连接时声明使用gb2312或gbk://host:3306/dbname?user=username&password=pass&useUnicode=true&characterEncoding=GBK to: jimjxr(宝宝猫) 我按照你的方法作了。可是问题还是没哟解决呵。如果不用String str = new String(FieldValue.getBytes("GB2312"),"ISO-8859-1");转化,数据库就去不出数据来。看来,我的mysql还没有能支持中文? 另外,我的\mysql\share\charsets\下面,没有gb2312的配置文件。 处理起来真是麻烦。这是不是和JDK的语言版本有关呢? 在my.ini设置好default-character-set = gb2312之后,你可以这样测试以下: 读书据: String data = new String(rs.GetString(1).getByte("GB2312"),"GB2312"); 显示数据的页面设置为<%@page contentType="text/html;charset=GB2312"%>正常显示表明数据库的字符集就是GB2312 这样测试能通过。但是,我发现问题是这样的:1)我使用ResultSet.getString()去数据的时候,取出的数据是gb2312编码。2)GB2312编码方式的页面提交数据数据之后,使用ResultSet.setString()方法写入未经转换的数据,数据库中一堆乱码。如果使用从gb2312向is0-8859-1编码转换,那么数据写入就正常。这是什么意思????难道是jdbc驱动的问题?我用的是gjt.mm.mysql.Driver最新的驱动啊。 新手求救~~逗号‘,’与点‘.’有那些区别呀? 让Java程序开机自动运行 如何改变JButton文字内容的字体? 走过路过不要错过.!!! 请教高手啊~~ 怎么对socket输出的信息以byte方式输出,接收以后再转为原类型 请教一个问题 Java中如何获取系统日志? 关于打包的问题 用FileReader 和FileWriter把一个文件从一个地方复制到另一个地方 关于线程,请大家来看看 如何将两个Date相差的天数求出来?
我是用jdbc over odbc就能写进去中文
用jdbc for mysql就写不进去
boolean Result = false;
try {
String str = new String(FieldValue.getBytes("GB2312"),"ISO-8859-1");//就是他。
System.out.println("Value: "+str);
resultset.updateString(FieldName,str);
Result = true;
}catch(Exception e){
System.out.println(this.getClass()+"UpdateField()"+e.toString());
}
return Result;
}
ResultSet rs;
rs.deleteRow();无法删除的数据:
>主关键字段值是汉字。
>如果关键字段值是英文字母可以用上面的方法删除。
>如果关键字段值是英文字母其他字段值是汉字,也可以删除。现象:
设定rs只打开了一条数据,在调用rs.deleteRow()方法后,立即调用rs.GetString(1),抛出SQL到了数据末尾的异常。证明删除成功。
于是设定Connection.autoCommit=false.在删除后手都提交,数据库仍然没有更新。请高手们再次指教。
webserver:tomcat 3.2
db:MySQL
jdbc driver:mm.MySQL JDBC
IDE:JB61.jsp页面有<%@ page contentType="text/html; charset=GBK" %>
2.jb6 project编码方式default(有系统决定)
3.通过jsp页面提交的表单参数,在通过request.getParameter获得后,进行编码转换,代码片断:
...
String param = request.getParameter("param");
try{
byte[] bytes = param.getBytes("iso-8859-1");
param = new String(bytes);
}catch(Exception e){
}
4.然后再使用jdbc,对数据库update5.从数据读出数据,不用编码转换
1. 在mysql配置文件中配置default charset:default-character-set = gbk
2. 在jdbc连接时声明使用gb2312或gbk://host:3306/dbname?user=username&password=pass&useUnicode=true&characterEncoding=GBK
我按照你的方法作了。可是问题还是没哟解决呵。如果不用
String str = new String(FieldValue.getBytes("GB2312"),"ISO-8859-1");
转化,数据库就去不出数据来。看来,我的mysql还没有能支持中文?
读书据:
String data = new String(rs.GetString(1).getByte("GB2312"),"GB2312");
显示数据的页面设置为
<%@page contentType="text/html;charset=GB2312"%>正常显示表明数据库的字符集就是GB2312
2)GB2312编码方式的页面提交数据数据之后,使用ResultSet.setString()方法写入未经转换的数据,数据库中一堆乱码。如果使用从gb2312向is0-8859-1编码转换,那么数据写入就正常。这是什么意思????难道是jdbc驱动的问题?我用的是gjt.mm.mysql.Driver最新的驱动啊。