Mysql 中文乱码问题解决办法

一、             Mysql 字符集。

字符集相关变量:

character_set_server:默认的内部操作字符集

character_set_client:客户端来源数据使用的字符集

character_set_connection:连接层字符集

character_set_results:查询结果字符集

character_set_database:当前选中数据库的默认字符集

    character_set_system:系统元数据(字段名等)字符集

其中在解决乱码问题中最关键的三个变量是:  character_set_client character_set_connectioncharacter_set_results

character_set_client指定的是Sql语句的编码,如果设置为 binarymysql就当二进制来处理,character_set_connection指定了mysql 用来运行sql语句的时候使用的编码,也就是说,程序发送给MySQL SQL语句,会首先被MySQLcharacter_set_client指定的编码转换到character_set_connection指定的 编码,如果character_set_clien指定的是binary,则MySQL就会把SQL语句按照 character_set_connection指定的编码解释执行.

当执行SQL语句的过程中,比如向数据库中插入字段的时候,字段也有编码设置,如果字段的编码设置和character_set_connection指定的不同,则MySQL 会把插入的数据转换成字段设定的编码。SQL语句中的条件判断和SQL插入语句的执行过程类似.

SQL执行完毕像客户端返回数据的时候,会把数据从字段指定的编码转换为character_set_results指定的编码,如果character_set_results=NULL 则不做任何转换动作,(注意这里设置为NULL不等于没有设置,没有设置的时候MySQL会继承全局设置)。 具体过程可参见图1

1

二、检测字符集问题的一些手段

• SHOW CHARACTER SET;

• SHOW VARIABLES LIKE 'character%’;

• SHOW VARIABLES LIKE 'collation%’;

• SQL函数HEXLENGTHCHAR_LENGTH

• SQL函数CHARSETCOLLATION

  使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8 

      +--------------------------+---------------------------------+
  | Variable_name | Value |
  +--------------------------+---------------------------------+
  | character_set_client | utf8 |
  | character_set_connection | utf8 |
  | character_set_database | utf8 |
  | character_set_filesystem | binary |
  | character_set_results | utf8 |
  | character_set_server | utf8 |
  | character_set_system | utf8 |
  | character_sets_dir | D:"mysql-5.0.37"share"charsets" |
  +--------------------------+---------------------------------+

  (2) 还有一种修改字符集的方法,就是使用mysql的命令

    mysql> SET character_set_client = utf8 ;
  mysql> SET character_set_connection = utf8 ;
  mysql> SET character_set_database = utf8 ;
  mysql> SET character_set_results = utf8 ;
  mysql> SET character_set_server = utf8 ;
  mysql> SET collation_connection = utf8 ;
  mysql> SET collation_database = utf8 ;
  mysql> SET collation_server = utf8 ;

 

 

二、             实例。

例:Mysql执行以文本方式存储的脚本代码,用select 语句查询时发现中文全变成了乱码。

解决方法:把文本文档的存储类型设为utf-8,设置SET character_set_client = utf8 ; character_set_connection = utf8 ;   SET character_set_results = gbk ;

再用select语句查询就可以看到中文了。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值