• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

好久不贱

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Java连接MySQL中文乱码处理

原文出处:http://busybox.is-programmer.com/posts/23596.html

最近学习MySQL时又遇到了一个烦人的问题,中文编码,虽然在建立数据库时设置的字符编码为utf8,在MySQL的console上执行insert插入中文时没问题,可是在java代码中插入中文到mysql中就是??了,就是代码中的realName

 /************************************************************
* Add resident
************************************************************
*/
public boolean addResident(String userID,String realName,String gender,
String birth,String addr,String tel,String email,String checkin) {
Connection conn
= this.getConnection();
CallableStatement stmt
= null;
Date birthDate
= null;
Date checkinDate
= null;
if(birth!=null && (!birth.equals(""))) {
birthDate
= Date.valueOf(birth);
}
if(checkin!=null && (!checkin.equals(""))) {
checkinDate
= Date.valueOf(checkin);
}
try {
stmt
= conn.prepareCall("{call ICommunity.addResident(?,?,?,?,?,?,?,?,?)}");
stmt.setString(
1, userID);
stmt.setString(
2, realName);
stmt.setString(
3, gender);
stmt.setDate(
4, birthDate);
stmt.setString(
5, addr);
stmt.setString(
6, tel);
stmt.setString(
7, email);
stmt.setDate(
8, checkinDate);

stmt.registerOutParameter(
9, Types.BOOLEAN);
stmt.execute();
return stmt.getBoolean(9);


}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
finally {
try {
conn.close();
stmt.close();
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


差了好多资料,可还是没有解决根本问题,不管在代码里怎么改变字符编码,到数据库中显示的还是乱码

 

最后一篇很给力的文章解决了问题:http://developer.51cto.com/art/200906/130425.htm,需要设置一下mysql的配置文件中的client和server的默认编码。

在linux下这个配置文件在/etc/mysql/my.cnf,编辑之后的文件内容为:

[client]
port
= 3306
socket
= /var/run/mysqld/mysqld.sock
default-character-set=utf8
# Here
is entries for some specific programs
# The following
values assume you have at least 32M ram

# This was formally known
as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket
= /var/run/mysqld/mysqld.sock
nice
= 0

[mysqld]
#
#
* Basic Settings
#

default-character-set=utf8


就是分别在[client]和[mysqld]下添加设置默认编码的语句。

然后重启mysql,sudo /etc/init.d/mysql restart

结果就正常了。。。

还有一篇介绍字符编码的文章也很给力:http://www.regexlab.com/zh/encoding.htm



posted on 2011-09-19 21:11  好久不贱  阅读(871)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3