Mysq中文l乱码问题涉及的关键参数

一、涉及的参数

1、 character_set_client

      这个参数的取值由连接的发起方决定,例如使用以下JDBC URL连接时:

               jdbc URL = mysql://127.0.0.1:3306/xxx?useUnicode=true&characterEncoding=utf8

则该取值为utf-8, 使用客户端(例如:Nivcat)连接时也有相应的指定方式。 如果未指定就使用数据库默认的值。 注意:如果jdbc url  是写在XML文件中(使用框架时写在配置文件中)需要用&  代替 & 符号 。

     它负责标识连接发起方发来的数据是怎样的编码方式,所以该编码的取值务必保证与源数据的编码方式一致,一旦该值与传入数据的真实的编码方式不一致,则会出现乱码 。

2、 character_set_connection

      这个参数同样由连接的发起方发来的数据决定,取值默认与character_set_client保持一致。

3、character_set_results 

      这个参数同样由连接的发起方发来的数据决定,取值默认与character_set_client保持一致,若发起方没有指定编码方式,则直接使用character_set_database的值。

      该值是数据库发送数据给宿主程序的编码方式,如果不合适,会导致数据库内数据正常,但是程序接受到的数据乱码。

4、character_set_database

      这个参数是在建立数据库时指定的值,如果未指定,则使用系统默认的值。它是一个数据库实例中每个table和字段的默认编码取值,除特殊情况外,通常会保证一个数据库中的所有字段编码方式一致。

二、 总结

1、 character_set_clientcharacter_set_connectioncharacter_set_results三个参数是在连接时确定的,是动态改变的,可以由连接的发起方(jdbc或者客户端)控制,也可以由Mysql的默认值决定。

2、character_set_database 是在建立数据库时指定的,它是该数据库下所有表和字段的默认取值。


 
                                                      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值