mysql 显示 乱码,MySQL 中文显示乱码~~~

最近学习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();

}

}

}

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

String name = null;

try {

//name = realName.getBytes("UTF-8").toString();

name = new String(realName.getBytes("iso_8859_1"),"utf8");

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

System.out.println("Exception "+e.getMessage());

}

最后一篇很给力的文章解决了问题: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值