linux mysql jdbc 乱码_JAVA linux下解决jdbc乱码的问题

前段时间想起来做linux下用jdbc连接mysql,在完成连接数据库后发现取回的string 只要是中文的都是乱码。在网上搜索了一圈也没有能够解决问题。

大部分的人都是转载的解决乱码的问题

jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8,这个在mysql的4.0版本以后基本就失效了。

不过需要在mysql的conf里面设置

default-character-set=utf8

从client端发送到mysql server端的过程:

1.mysql命令行下发送update语句,使用locale的编码对语句进行编码。

2.mysql server接收到语句后,根据character_name_client的编码对语句进行解码。然后进行查询

3.把查询到结果用character_name_results进行编码,发送回client端

4.client端接到server端的语句后,用local的编码进行解码,输出到标准输出上。

对照上面的过程,一步一步来看,在发送语句的时候,对比locale的编码和character_name_client的编码是否一致,locale为utf-8,character_name_client的编码为gbk,因为      这两种编码不一样,造成在第2步的时候,乱码就产生了,编码和解码所用的字符集不一样。

在对数据库进行操作前,进行set character_name_client=utf8的设置,顺便带一句,有时候我们在命令行select查询的时候,返回的结果中包含有中文的话,如果出现了乱码,在character_name_client和locale的字符集相同的情况下,很有可能是第4步出现了乱码,character_name_results的编码和locale的编码不同所造成,原理同上。我解决方法是在每次数据库连接时候都先进行 设置字符集的操作, set names utf8     然后     character_name_results = utf8 数据库的格式也是utf8   这样返回的中文就不是乱码了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值