ITKeyword,专注技术干货聚合推荐

注册 | 登录

java读写Mysql数据库乱码

liuhuoxingkong 分享于 2015-06-26

推荐:java 数据库操作(mysql)

JDBC连接数据库 一、各类数据库连接的驱动包及其驱动程序 1.       MySQL(http://www.mysql.com)mysql-connector-java-2.0.14-bin.jar  Class.forName( "org.gjt

2020腾讯云共同战“疫”,助力复工(优惠前所未有!4核8G,5M带宽 1684元/3年),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1053

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

写代码又遇到了万恶的中文乱码问题,比较奇怪的是server上已有的代码,在链接时通过"useUnicode=true&characterEncoding=gbk"转码后无乱码,但在本机上使用同样的代码读写得到的确实中文乱码。数据库是远程server,环境不能改动,在网上搜到的大部分方法都是抄来抄去且不能解决实际问题的方法。所幸搜了半天还是找到了一个。查看server数据库编码,执行sql:“ show variables like 'char%'; ” 得到各种字符编码如下:

character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/

可知:mysql使用的是Latin1字符集,那么下面的问题就是怎样在java端把从数据库中读取出的内容转为Latin1编码了搜索一番后找到下面的内容。

推荐:Java与MySQL数据库编程

Java连接数据库过程:   第一步:驱动安装和路径设置 Step1:到mysql的官方网站下载mysql-connector-java-5.0.8.zip驱动,解压以后复制里面的mysql-connector-ja

【以下是搜到的内容,原文网址:http://ghostgate.blog.163.com/blog/static/20570131200811442747326/】

MySQL默认使用 ISO-8859-1 ( 即Latin1 ) 字符集,而JAVA内部使用Unicode编码,因此在JAVA中向MYSQL数据库插入数据时,或者读取数据时,都需要先转换一下编码方式:

插入数据

如:
...
String str="中文";
String sql = "insert into Tb (xxx) values (?)"
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,str);
pstmt.executeUpdate();
这样插入到Mysql数据库后,用mysql.exe连接查看数据可以看到,插入数据变成了几个“?”呈,也即成了乱码。

解决方法是:

String str="中文";
str = new String(str.getBytes(),"ISO8859_1");         //加入此句,改变编码为iso-8859-1
String sql = "insert into Tb (xxx) values (?)"
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setString(1,str);

pstmt.executeUpdate();

 读取数据:
 方法与插入数据类似,如下:
...
String str = rs.getString(1);
str = new String(str.getBytes("ISO8859_1");     //由ISO8859-1编码还原为JAVA内部默认字符集
//或者 str = new String(str.getBytes("ISO8859_1","GBK");

推荐:Java连接MySQL数据库

1 下载安装Connector/J,下载地址:http://www.mysql.com/products/connector/。Connector/J是专门针对MySQL而开发的JDBC驱动程序包。 2 将安装目录下的mysql-co

写代码又遇到了万恶的中文乱码问题,比较奇怪的是server上已有的代码,在链接时通过"useUnicode=true&characterEncoding=gbk"转码后无乱码,但在本机上使用同样的代码读写得到的确实中文乱码。

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。