java连接mysql的编码问题 急!!

kouwenxuan 2014-04-15 11:12:39
这是Mysql的默认编码,不论是建立数据库还是表都用的utf8编码的

我用phpMyAdmin向一个表插入几条记录,但是从命令行查看记录,为啥是乱码,感觉是用的GBK解码显示的,但是在phpMyAdmin下查看正常,navicat for mysql去查看也是正常的!如下:

之后我又试了下java用mysql驱动包连接数据库 如下:



这三段连接参数,characterEncoding都是不同的编码,但是却都能读出数据并显示,并且不出现乱码,难道参数根本不管用么? 如下:

都得到了同一个结果
!!!!!!!!!!!!!求大神赐教,不胜感激

...全文
278 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dokia123 2014-04-20
楼主,characterencoding这个参数时告诉数据,我发给你的数据是以什么“编码方式”编码的和你发给我的数据要以什么编码格式编码然后给我。而这个参数跟数据库里的编码方式没关系,这牵涉到数据在内存里是以什么编码方式存在,其实数据在内存里是以unicode编码存在的,我先跟你讲一下大概的流程吧。 你从数据库获取数据的编码流程: 发送查询数据请求-----数据库从硬盘上把数据弄到内存(这里数据库本身有个编码转换,比如在硬盘上是GBK的,所以这里会将GBK的数据转成unicode,然后放到内存)-----然后把内存里的数据通过网络发送给你(这里有另外一层编码转换,用到了你的那个参数characterencoding,假如该参数值是UTF-8,然后就会把内存里的数据由unicode转换为UTF-8通过网络发给你)-----你的项目接收到数据后,放到内存里面(之前说过,在内存里是以unicode编码存在的,所以这里会由UTF-8转为unicode),然后你在程序里的一切操作,比如Sting.getByte("GBK"),就是将字符串由unicode编码为GBK的字节数据,然后new String(byte[],"UTF-8"),就是把字节数据当做UTF-8的编码格式来解析(其实他是GBK编码的,这里就会出现乱码),转为unicode编码,然后再存到内存。 同样,你发数据到数据库存储也一样。 现在应该知道为什么无论你设置characterencoding为什么编码,都不会乱码的原因了吧,一切都是因为有了中间的转换过程unicode,而这一部,对你是透明的。
回复
你那底下那个控制台出现乱码就出鬼了。要是出现乱码了,就意味着Eclipse只控制台输出只支持某一种编码了,那么使用其他编码的地区的人们还怎么活。
回复
飘飘hlh 2014-04-18
在配置mql数据库的时候把编码选成utf-8
回复
Kenzson 2014-04-16
一般都设置成gb2312
回复
kouwenxuan 2014-04-16
有没有大神知道从java通过驱动包到mysql之间,编码和解码的流程
回复
mysql是有编码格式的
回复
kouwenxuan 2014-04-16
把character-set-client改为GBK 这个设置可以解决命令行下得乱码,不过数据库里边都是Utf8编码,为何要设置为GBK才能解决命令行乱码呢
回复
kouwenxuan 2014-04-16
数据库安装时选择的就是Utf-8,然后用gb2312依旧可以得到结果,无乱码
回复
ay转身遇 2014-04-16
安装的时候 没有选utf-8吧?
回复
编码格式那几个都不行的话再试试gb2312
回复
妙蛙大种子 2014-04-16
把character-set-client改为GBK
回复
kouwenxuan 2014-04-16
java去连接Mysql的时候,数据库里边的记录都是Utf-8编码的,但是链接时characterEncoding用gbk, utf8, iso-8859-1为什么没有乱码问题呢
回复
你看看unicode 就知道了,所有计算机上使用的代码,都可以互相转换 http://www.cnblogs.com/xuefuwu/archive/2012/05/06/2486577.html
回复
相关推荐
发帖
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2014-04-15 11:12
社区公告
暂无公告