mysql字符编码设置,mysql中文问题解决方案

方案1、(建数据库前,推荐使用)

1、Windowsmysql

一、停止MySQL服务sql

二、在MySQL的安装目录下找到my.ini,若是没有就把my-medium.ini复制为一个my.ini便可数据库

三、打开my.ini之后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭编码

四、启动MySQL服务继承

 

2、Linuxio

一、停止MySQL服务(bin/mysqladmin -u root shutdown)cli

二、在/etc/下找到my.cnf,若是没有就把MySQL的安装目录下的support-files目录下的my-medium.cnf复制到/etc/下并更名为my.cnf便可乱码

三、打开my.cnf之后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭file

四、启动MySQL服务(bin/mysqld_safe&)sql语句

很是简单,这样的修改一劳永逸,从此MySQL一切相关的默认编码均为UTF-8了,建立新表格的时候无需再次设置 

须要注意的是,当前数据库中已经存在的数据仍保留现有的编码方式,所以须要自行转码,方法在网上有不少,再也不赘述

方案2、

通常在MYSQL使用中文查询都是用 set NAMES character
-
-
character_set_client ,这是用户告诉MySQL查询是用的什么字符集。
character_set_connection ,MySQL接受到用户查询后,按照character_set_client将其转化为character_set_connection设定的字符集。
character_set_results , MySQL将存储的数据转换成character_set_results中设定的字符集发送给用户。


SET NAMES 'x'语句与这三个语句等价:
mysql> SET character_set_client = x;mysql> SET character_set_results = x;mysql> SET character_set_connection = x;

SET character_set_client = binary;使用二进制字符集查询 此三处的字符设定很大程度上会解决乱码问题,那么着三个设定具体有什么做用呢? character_set_client指定的是Sql语句的编码,若是设置为binary,mysql就当二进制来处 理,character_set_connection指定了mysql 用来运行sql语句的时候使用的编码,也就是说,程序发送给MySQL 的SQL语句,会首先被MySQL从character_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会继承全 局设置), 工做中比较有用的就是利用MySQL进行转码、不一样编码的数据库之间共用数据。

相关文章
相关标签/搜索