精华内容
下载资源
问答
  • mysql字符集

    2018-10-19 10:33:42
    1、mysql字符集 (1)mysql字符集  字符集就是一套文字符号及编码,比较规则的集合。mysql的字符及包括字符集(CHARACTER)和校对规则(COLLATION)  MySQL字符集支持在基于InnoDB, MyISAM, Memory三个存储引擎...

    1、mysql字符集

    (1)mysql字符集

             字符集就是一套文字符号及编码,比较规则的集合。mysql的字符及包括字符集(CHARACTER)和校对规则(COLLATION)

             MySQL字符集支持在基于InnoDB, MyISAM, Memory三个存储引擎的MySQL实例、数据库、表、列四个级别上设置,同时MySQL提供了多种字符集和排序规则,其中字符集设置、数据存储以及客户端与MySQL实例的交互相关,排序规则和字符串的对比规则相关。查看当前MySQL支持的字符集的方式有两种,一种是通过查看information_schema.character_set系统表,一种是通过命令show character set查看。

    (2)mysql常用字符集

             1)Latin字符集

             又称Latin-1或“西欧语言”,是国际标准化组织内ISO/IEC 8859的第一个8位字符集。它以ASCII为基础,此字符集支持部分于欧洲使用的语言。也是mysql5.7中默认字符集。

    # 创建基于latin字符集的表并插入中文
    mysql> CREATE TABLE test01(name varchar(100) DEFAULT NULL,name2 varchar(100) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    # 将客户端的字符集也设置为latin1,否则不能插入中文
    mysql> set names 'latin1';
    mysql> insert into test01 values('china','中国');
    mysql> select * from test01;
    +-------+-------+
    | name  | name2 |
    +-------+-------+
    | china | 中国  |
    +-------+-------+

             Latin1是一种很常见的字符集,这种字符集是单字节编码,向下兼容ASCII,Latin1覆盖了所有的单字节,因此,可以将任意字符串保存在latin1字符集中,而不用担心有内容不符合latin1的编码规范而被抛弃。

             mysql使用者经常利用Latin1的这种全覆盖特性,将其它类型的字符串,gbk,utf8,big5等,保存在latin1列中。保存的过程中没有数据丢失,只要原样取出来,便又是合法的gbk/utf8/big字符串。如果将gbk字符串保存在utf8列中,则gbk字符串中那些不符合utf8编码格式的内容,会被抛弃,保存的内容无法原样取出,数据实际上遭到了破坏。

    # 将客户端的字符串该为utf8时新插入的数据为utf8则会遭到破坏
    mysql> insert ignore into test01(name,name2) values('china1','中国一');     
    mysql> select * from test01;
    +--------+---------------+
    | name   | name2         |
    +--------+---------------+
    | china  | 中国        |
    | china1 | ???           |
    +--------+---------------+

    2)Unicode字符集

             Unicode(Universal Code)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode存在不同的编码方案,包括Utf-8,Utf-16和Utf-32。Mysql支持的unicode的字符集主要有以下几种:

    character set

    Supported characters

    Required storage per character

    Utf8

    BMP only

    1、2、3 bytes

    Ucs2

    BMP only

    2bytes

    Utf8mb4

    BMP and supplementary

    1、2、3、4bytes

    Utf18

    BMP and supplementary

    2、4bytes

    Utf16le

    BMP and supplementary

    2、4bytes

    Utf32

    BMP and supplementary

    4bytes

             BMP(BMP-Basic Multilingual Plane):基本多语言范围。如果将BMP之外的扩展字符转换成utf8等仅支持BMP的字符集时,不识别的字符会转化成?号;除UTF8外,客户端字符集不支持设置为其他的Unicode字符集。

             UTF8字符集:UTF8(Unicode Transformation Format with 8-bit units)是一种存放Unicode数据的编码规则。各类字符占用的大小如下:

                       基础拉丁字母,数字,标点符号会占用一个字节

                       扩展的拉丁字符,希腊语,斯拉夫语,阿拉伯语等会占用两个字节

                       韩语,中文,日语字符会占用3个或4个字节

             在MySQL中,UTF8字符集不支持扩展字符,且仅占用最多3个字节

    3)国家字符集

             标准SQL中会有两种预定义的字符集数据类型,分别是nchar和nvarchar。 在MySQL中这种预定义的字符集就是UTF8。对字符串来说,可以使用N'字符串'的方式表明使用国家字符集。

    mysql> create table test03(name nchar(10),name2 nvarchar(10),name3 varchar(10));
    mysql> show create table test03;
    +--------+----------------------------------------------------------+
    | Table  | Create Table                                                                                                                                                                                                
    +--------+----------------------------------------------------------+
    | test03 | CREATE TABLE `test03` (
      `name` char(10) CHARACTER SET utf8 DEFAULT NULL,
      `name2` varchar(10) CHARACTER SET utf8 DEFAULT NULL,
      `name3` varchar(10) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +--------+-----------------------------------------------------------+

    4)中文字符集和排序规则

    字符集

    描述

    排序规则

    big5 

    Big5 繁体中文

    big5_bin、big5_chinese_ci (default)

    gb2312 

    GB2312 简体中文

    gb2312_bin、gb2312_chinese_ci (default)

    gbk 

    GBK简体中文

    gbk_bin、gbk_chinese_ci (default)

    gb18030 

    中国国家标准GB18030)

    gb18030_bin:二进制排序规则

    gb18030_chinese_ci (default):若是字母就按照字母排序,如果是汉字则按照拼音排序

    gb18030_unicode_520_c:Unicode排序规则

    mysql> create table test04(name01 varchar(10) character set utf8 not null,name02 varchar(10) character set gbk,name03 varchar(10) character set gb2312,name04 varchar(10)) engine=InnoDB charset=latin1;
    mysql> insert ignore into test04 values('中国','中国','中国','中国'); 
    # 由于连接字符集和客户端字符集都为utf8导致latin字符集插入中文时数据遭到破坏
    mysql> select * from test04;
    +--------+--------+--------+--------+
    | name01 | name02 | name03 | name04 |
    +--------+--------+--------+--------+
    | 中国   | 中国   | 中国   | ??     |
    +--------+--------+--------+--------+

    (3)查看mysql中字符集及排序规则

    # 查看当前数据库字符集
    mysql> show variables like '%charac%';
    +--------------------------+-----------------------------------------+
    | Variable_name            | Value                                   |
    +--------------------------+-----------------------------------------+
    | character_set_client     | utf8                                    |
    | character_set_connection | utf8                                    |
    | character_set_database   | latin1                                  |
    | character_set_filesystem | binary                                  |
    | character_set_results    | utf8                                    |
    | character_set_server     | latin1                                  |
    | character_set_system     | utf8                                    |
    | character_sets_dir       | /usr/local/mysql-5.7.32/share/charsets/ |
    +--------------------------+-----------------------------------------+

             各字符集的含义如下:

                       character_set_client:连接客户端发送的语句的字符集

                       character_set_connection:客户端与服务交互时的字符集

                       character_set_database:当前所在库的字符集  

                       character_set_results:参数决定了语句的执行结果以什么字符集返回给客户端

                       character_set_server:当前登录的数据库实例的字符集    

                       character_set_system:数据库所在系统的字符集         

    # 查看当前数据库排序规则
    mysql> show variables like '%collation%';
    +----------------------+-------------------+
    | Variable_name        | Value             |
    +----------------------+-------------------+
    | collation_connection | utf8_general_ci   |
    | collation_database   | latin1_swedish_ci |
    | collation_server     | latin1_swedish_ci |
    +----------------------+-------------------+

    2、mysql字符集排序规则

    (1)mysql字符集排序规则

             每个指定的字符集都会有一个或多个支持的排序规则,可以通过两种方式查看,一种是查看information_schema.collations表,另一种是通过show collation命令查看;不同的字符集不可能有相同的排序规则,每个字符集都会有一个默认的排序规则。

    (2)排序规则的命名规则

             排序规则的命令通常是以对应的字符集的名字为开头,并以自己的特定属性结尾,当排序规则特指某种语言时,则中间的部分就为这种语言的名字,如” utf8_turkish_ci”代表UTF8字符集中的土耳其语排序中对大小写不敏感

    结尾符

    代表含义

    _ai

    口音不敏感

    _as

    口音敏感

    _ci

    大小写不敏感

    _cs

    大小写敏感

    _bin

    二进制

            当排序规则名字中没有指定_as或者_ai时,则是否口音敏感是由_ci或者_cs决定。对Unicode的字符集来说,对应的排序规则也可能会包含unicode排序算法的版本号,如果没有这个版本号显示则表示是基于4.0.0这个版本。

    3、字符集及排序规则的设置

    (1)实例级别字符集和排序规则的设置

             实例级别的字符集可以在实例启动的时候指定或在默认的配置文件中指定,默认的字符集是latin1,当仅指定了字符集没有指定排序规则时,则默认的排序规则是该字符集的默认排序规则。

             设置参数:

                       character-set-server:指定字符集

                       collation-server:指定排序规则

    # 启动mysql实例时设置字符集
    ]# /etc/init.d/mysqld start --character-set-server=latin1 --collation-server=latin1_swedish_ci  
    # 在mysql配置文件中设置字符集,在老版本中使用” Default-character-set”参数
    [mysqld]
    character-set-server=utf8
    # 修改实例级别的默认字符集,对root用户无效
    mysql> show variables like '%character_set%';

    (2)库级别字符集和排序规则的设置

             数据库级别的字符集和排序规则,可以通过create database和alter database语句来指定和修改。

    # 创建一个数据库并指定排序规则
    mysql> create database test01 character set utf8;
    # 修改创建的库的排序规则
    mysql> alter database test01 character set latin1;
    mysql> show create database test01;
    +----------+-------------------------------------------------+
    | Database | Create Database                                      
    +----------+-------------------------------------------------------+
    | test01   | CREATE DATABASE `test01` /*!40100 DEFAULT CHARACTER SET latin1 */ |
    +----------+--------------------------------------------------------+

    (3)表级别字符集和排序规则的设置

             每个表都有自己的字符集和排序规则,可以通过create table和alter table语句指定或修改表的字符集和排序规则;如果没有指定排序规则时会使用字符集默认的排序规则,如果没有指定字符集时则使用排序规则对应的字符集。当两个属性都没有指定时,会使用数据库级别的字符集和排序规则。

    # 创建表时指定排序规则和字符集
    mysql> create table test01(id int,name varchar(100)) character set utf8 collate utf8_general_ci;
    # 修改表的字符集,表的字符集不会改变已经存在的字段的字符集和字段里的数据
    mysql> alter table test01 character set latin1;
    mysql> show create table test01;
    +--------+--------------------------------------------------+
    | Table  | Create Table                                                                                                                                      
    +--------+---------------------------------------------------+
    | test01 | CREATE TABLE `test01` (
      `id` int(11) DEFAULT NULL,
      `name` varchar(100) CHARACTER SET utf8 DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +--------+---------------------------------------------------------+

    (4)列级别字符集和排序规则的设置

             每个字符串字段都有自己的字符集和排序规则,可以在create table和alter table指定和修改字段的字符集和排序规则。如果通过alter table语句修改某一列的字符集时,MySQL会试图转换其中已有的数据,这样的转换有可能会导致数据丢失。

    # 创建一张表并指定某些字段的排序规则
    mysql> CREATE TABLE test02 (id int,name VARCHAR(5) CHARACTER SET latin1 COLLATE latin1_german1_ci);
    # 修改列级别字符集
    mysql> alter table test02 modify name varchar(12) character set utf8;
    # 当修改为范围更小的级别的字符集时会报错
    mysql> alter table test02 modify name varchar(12) character set greek;
    ERROR 1366 (HY000): Incorrect string value: '\xC3\xA4\xC2\xB8\xC2\xAD...' for column 'name' at row 1

    (5)连接级字符集和排序规则

             每个数据库客户端连接都有自己的字符集和排序规则属性,客户端发送的语句的字符集是由character_set_client决定,而与服务端交互时会根据character_set_connection和collation_connection两个参数将接收到的语句转化。当涉及到显示字符串的比较时,由collation_connection参数决定,而当比较的是字段里的字符串时则根据字段本身的排序规则决定。

             客户端可以很方便的调整字符集和排序规则,当使用”set names”语句设置字符集时相当于同时设置了character_set_client、character_set_connection、character_set_results的值。

    # 设置客户端的字符集的排序规则
    mysql> set names latin1;

             也可以通过参数 --init_connect="SET NAMES 'utf8'" 来让每个客户端连接都自动设置字符集,但缺点是对拥有super权限的用户不生效;init_connect表示服务器为每个连接的客户端执行的字符串,要想指定多个语句,用分号间隔开。

    # 通过命令设置客户端的排序规则的字符集
    mysql> SET GLOBAL init_connect='SET AUTOCOMMIT=0;set names utf8';
    #通过配置文件设置默认的客户端的字符集和排序规则
    [mysqld]
    init_connect='SET AUTOCOMMIT=0;set names utf8’

    (6)排序规则在sql语句中使用

             在SQL语句中指定排序规则可以覆盖之前定义的默认排序规则

    mysql> select sname,gender from student order by gender collate latin1_german2_ci;               
    +--------+--------+
    | sname  | gender |
    +--------+--------+
    | Andy   | 0      |
    | Bob    | 0      |
    # 使用函数时定义排序规则
    mysql> select max(score collate latin1_german2_ci) from score;
    +--------------------------------------+
    | max(score collate latin1_german2_ci) |
    +--------------------------------------+
    | 95                                   |
    +--------------------------------------+

    (7)字符集和排序规则使用注意事项

             当应用程序使用MySQL默认的字符集和排序规则时,则应用程序端不需要特别的设置,而当不是使用默认属性时则需要特别设置。

    4、mysql数据库字符集的转化

             1)MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;
             2)进行内部操作前将请求数据从character_set_connection转换为内部操作字符集
             3)将操作结果从内部操作字符集转换为character_set_results

    5、mysql数据库字符集的乱码及解决方法

    (1)字符集乱码原因

             1)客户机没有正确地设置client字符集,导致原先的SQL语句被转换成connection所指字符集,而这种转换,是会丢失信息的

             2)数据库字体没有设置正确,那么connection字符集转换成database字符集照样丢失编码

    (2)解决字符乱码方案

             1)首先要明确你的客户端时候何种编码格式,这是最重要的(IE6一般用utf8,命令行一般是gbk,一般程序是gb2312)

             2)确保数据库使用utf8格式,很简单,所有编码通吃。

             3)要保证connection字符集大于等于client字符集,不然就会信息丢失

    展开全文
  • MySQL字符集

    2019-06-30 21:27:10
    mysql字符集基础知识 1.什么叫字符集?常用的字符集的分类? 字符集就是字符和编码的集合,常用的中文字符集是gbk,英文字符集是ASCII 多种字符在一个字符集里,常用的UTF8 2.数据库存取数据与字符集的关系 数据库...

    mysql字符集基础知识

    1.什么叫字符集?常用的字符集的分类?
    字符集就是字符和编码的集合,常用的中文字符集是gbk,英文字符集是ASCII
    多种字符在一个字符集里,常用的UTF8

    2.数据库存取数据与字符集的关系
    数据库在存取数据时,会在字符集中寻找各个字符对应的编码,然后存取编码

    3.操作系统查看字符集的种类
    windows 使用chcp命令查看,查看到是936,说明是中文字符集
    在这里插入图片描述linux 使用cat /etc/sysconfig/i18n #当前是utf8字符集在这里插入图片描述4.在linux中编码和字符的关系,以ASCII字符集为例
    mysql> select ascii(‘a’); ##查看在ASCII中字符a对应的编码
    ±-----------+
    | ascii(‘a’) |
    ±-----------+
    | 97 | ##在ascii中,字符a对应的编码是97
    ±-----------+
    1 row in set (0.01 sec)

    mysql> select ascii(‘x’);
    ±-----------+
    | ascii(‘x’) |
    ±-----------+
    | 120 |
    ±-----------+
    1 row in set (0.00 sec)

    mysql> select ascii(‘1’);
    ±-----------+
    | ascii(‘1’) |
    ±-----------+
    | 49 | ##字符1对应的编码是49
    ±-----------+
    1 row in set (0.00 sec)

    5.mysql内部存储字符集的相关知识

    1)mysql内部存储字符集有4种。分别是服务器字符集,数据库字符集,表字符集,列字符集,他们的优先级顺序是列字符集 > 表字符集 > 数据库字符集 > 数据库字符集,因为数据最终存放在列上。我们常用的字符集是数据库字符集和表字符集,服务器级别一般忽略
    如果列的字符集没有设置,那么列的字符集就会继承表的字符集

    2)mysql> show character set; ##查看数据库级别中有哪些字符集

    mysql> show variables like ‘%character%’;  ##可以查看到服务器级别(character_set_server)是什么字符集,一  般忽略!
    
    mysql>show create database test;    ##可以查看到test数据库是什么字符集
    

    3)在创建数据库(database)的时候可以指定该数据库是哪个字符集,同样在新建表(table)也可以指定是哪个字符集
    EX: mysql> create table t20(name varchar(10)) character set gbk;
    Query OK, 0 rows affected (0.06 sec)
    ##创建t20表,指定为gbk字符集
    mysql>show create table t20;
    ##可以查看到t20表是哪个字符集

    同样的新建列时也可以指定是哪个字符集
    mysql> create table t21(name varchar(10) character set big5); ##新建t21表,表里有name列,name列上是big5字符集
    Query OK, 0 rows affected (0.05 sec)

    mysql> show create table t21; ##查看t21表中的信息,可以看到列的字符集
    ±------±-----------------------------------------------------------------------------------------------------------------+
    | Table | Create Table |
    ±------±-----------------------------------------------------------------------------------------------------------------+
    | t21 | CREATE TABLE t21 (
    name varchar(10) CHARACTER SET big5 DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    ±------±-----------------------------------------------------------------------------------------------------------------+

    mysql字符集综合解惑以及最佳实践

    mysql> show variables like ‘%character%’;
    ±-------------------------±---------------------------------+
    | Variable_name | Value |
    ±-------------------------±---------------------------------+
    | character_set_client | utf8 |
    | character_set_connection | utf8 |
    | character_set_database | latin1 |
    | character_set_filesystem | binary |
    | character_set_results | utf8 |
    | character_set_server | latin1 |
    | character_set_system | utf8 |
    | character_sets_dir | /usr/local/mysql/share/charsets/ |
    ±-------------------------±---------------------------------+

    上方标蓝字符集的关系图
    在这里插入图片描述详解

    1. character_set_client必须能够正确反映mysql客户端(MySQL Client)的字符集是什么,换句话说,也就是 character_set_client参数和mysql客户端的字符集是一样的
      2.character_set_connection一般和character_set_client参数是一样的
      3.MySQL server中的内部操作字符集就是服务器,数据库,表,列四类级别的字符集
      4.character_set_results 关系到返回的结果

    各类字符集关系详解
    1.客户端连接服务端,客户端在往服务端传输数据时,数据只能以数字形式传输,所以在传输之前会对数据进行编码
    假如在客户端执行insert into t20(name) values(‘你好’);【命令释义:往t20表中的name列插入你好】。
    ‘你好’被进行了编码 假设被编成9190和9133

    2.mysql服务端接到你输入的SQL语句以后,发现里面有字符,他会在发送之前做以下事情
    1)发现是insert命令
    2)发现t20表中的name列的数据类型是varchar,varchar里面存放的是字符,字符就需要编码
    3)找到‘你好’对应的编码‘9190 ,9193’
    4)找到对应编码以后,客户端会通过character_set_client参数告诉服务端自己的编码方式
    补充:可以通过status查看客户端的编码方式

    Client characterset一定要正确的反映客户端的编码方式

    注:
    1)存数据即客户端执行插入等语句时:
    如果客户端的character_set_client对应的编码方式与服务器端character_set_connection对应的编码方式不一致时,会发生转换;但是只能有一次转换机会,也可能发生在character_set_connection对应的编码方式与mysql内部存储字符集的编码方式不一致;如果都一致,则不会进行转换
    2)取数据即客户端向服务端读取数据时:
    服务端的character_set_connection与客户端的character_set_results,两者发生协商

    注意:存数据和取数据与服务端协商不是一个通道,存数据是与character_set_client参数有关,取数据是与character_set_results参数有关

    最佳实践举例:在这里插入图片描述d1列没有设置字符集,d2列是utf8,d1和d2列上都含有varchar数据类型的列

    当中国用户往d1列上插入数据时,不用转换,取数据时也没有发生转换,因为client,connection和d1列的字符集都是gbk

    当日本用户往d2列上插入数据时,在client和connection上没有发生转换,在d2列上发生转换,将日文的字符集转换为utf8,取数据时将utf8转换为日文字符集

    校对规则(collation)
    我们需要针对utf8字符集或其他字符集设置一个关于比较和排序的大小写是否敏感的参数,默认是都不区分大小写。

    如何设置这个参数?
    我们需要在建表时,指定collate=utf8_bin(utf8可以换成其他字符集)
    mysql> create table t2(id int,name varchar(20)) CHARACTER SET utf8 COLLATE=utf8_bin;
    ##建表和id,name列,指定为utf8字符集,并且设置参数为大小写敏感
    Query OK, 0 rows affected (0.05 sec)

    mysql> insert into t2 values(1,‘a’); #往id列中插入1,name列中插入a
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into t2 values(1,‘A’);
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into t2 values(1,‘B’);
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into t2 values(1,‘b’);
    Query OK, 1 row affected (0.00 sec)

    mysql> select * from t2 where name=‘a’; ##查看t2列中名字叫a的列
    ±-----±-----+
    | id | name |
    ±-----±-----+
    | 1 | a |
    ±-----±-----+
    1 row in set (0.00 sec)

    比较未设置参数时
    在这里插入图片描述

    比较两种方式的排序
    在这里插入图片描述

    utf8_bin是按照字符编码的数字大小排序
    可以使用select ascii(‘字符’)查看对应的编码号
    在这里插入图片描述
    所以utf8_bin的排序方式是ABab

    综上可以看出设置utf8_bin这个参数会影响排序方式和where条件语句

    关于collation的特点
    在mysql服务器,数据库,表,列四种级别中都有collation,且优先级越来越高
    我们可以在建表时使用SET utf8 COLLATE=utf8_bin语句设置collation参数,那么collate有哪些值可以设置呢?我们可以使用show collation;查看允许设置的值。

    展开全文
  • mysql 字符集

    2015-12-29 22:15:40
    之前以为修好mysql字符集是用set命令,今天发现用set命令设置字符集之后,如果重启mysql的话,结果又是和配置文件里的字符集是一样的,而不是刚刚用set命令设置的字符集。换句话说,set命令设置字符集只是暂时起...


    乱码

    问题描述

    乱码,一般是中文乱码。


    原因分析

    MySQL会出现中文乱码的原因不外乎下列几点:
    1.server本身设定问题,例如还停留在latin1
    2.table的语系设定问题(包含character与collation)
    3.客户端程式(例如php)的连线语系设定问题

    http://blog.csdn.net/luoweifu/article/details/8832492


    解决方法

    修改字符集。





    修改字符集

    问题描述

    之前以为修好mysql的字符集是用set命令,今天发现用set命令设置字符集之后,如果重启mysql的话,结果又是和配置文件里的字符集是一样的,而不是刚刚用set命令设置的字符集。换句话说,set命令设置字符集只是暂时起作用,一旦重启mysql之后,就又恢复到之前的字符集。


    原因分析

    同上。

    解决方法

    那么,该如何修改mysql的字符集呢?只有在配置文件里修改咯,并且修改完之后,要重启mysql。


    具体怎么修改?

    1、windows版本

    修改配置文件里的字符集。


    修改2个地方,一个是mysql服务器本身的字符集,一个是客户端的字符集(客户端字符集是干嘛的?待研究!)。

    # CLIENT SECTION
    # ----------------------------------------------------------------------
    #
    # The following options will be read by MySQL client applications.
    # Note that only client applications shipped by MySQL are guaranteed
    # to read this section. If you want your own MySQL client program to
    # honor these values, you need to specify it as an option during the
    # MySQL client library initialization.
    #
    [client]
    
    port=3306
    
    [mysql]
    
    default-character-set=utf8

    # SERVER SECTION
    # ----------------------------------------------------------------------
    #
    # The following options will be read by the MySQL Server. Make sure that
    # you have installed the server correctly (see above) so it reads this 
    # file.
    #
    [mysqld]
    
    # The TCP/IP Port the MySQL Server will listen on
    port=3306
    
    
    #Path to installation directory. All paths are usually resolved relative to this.
    basedir="C:/Program Files (x86)/MySQL/MySQL Server 5.5/"
    
    #Path to the database root
    datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
    
    # The default character set that will be used when a new schema or table is
    # created and no character set is defined
    character-set-server=utf8


    2、linux版本

    没看到配置文件里有字符集,所以添加一个字符集。


    只需添加一个地方,那就是mysql服务器的字符集。

    [mysqld]
    # Settings user and group are ignored when systemd is used (fedora >= 15).
    # If you need to run mysqld under different user or group, 
    # customize your systemd unit file for mysqld according to the
    # instructions in http://fedoraproject.org/wiki/Systemd
    user=mysql
    
    character_set_server = utf8
    
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock


    注:不论是修改字符集,还是添加字符集,都不要放错了地方,而应该放在对应的mysql服务器配置段落或者客户端配置段落,否则重启mysql时可能会重启失败。

    展开全文
  • mysql 字符集

    2007-01-04 13:56:00
    mysql 字符集 一. 显示字符集 mysqladmin -uroot -proot variables | grep character | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 |

    mysql 字符集

    一. 显示字符集

    mysqladmin -uroot -proot variables | grep character

    | character_set_client | latin1 |

    | character_set_connection | latin1 |

    | character_set_database | latin1 |

    | character_set_results | latin1 |

    | character_set_server | latin1 |

    | character_set_system | utf8 |

    | character_sets_dir | /usr/local/share/mysql/charsets/ |

    数据库缺省使用latin1 (ISO-8859)

    二. 配置字符集

    1. 建库时配置字符集

    create database testxxx default charset=utf8

    3. 建表时配置字符集

    CREATE TABLE `t_agent` (

    `ID` smallint(5) NOT NULL

    ) DEFAULT CHARSET=utf8 ;

    4. 修改字符集

    Windows平台

    windows下的mysql配置文件是my.ini,一般在c:/windows/my.ini或者c:/winnt/my.ini可以直接在这个文件里面加上

    default-character-set=gbk #或gb2312,big5,utf8

    然后重新启动mysql

    service mysql restart

    /etc/init.d/mysql restart

    或用其他方法重新启动,就生效了。

    [编辑]Unix平台

    linux下的mysql配置文件是my.cnf,一般是/etc/my.cnf,如果找不到可以用find命令找一下:

    find / -iname my.cnf

    在这个文件里面加上

    default-character-set=gbk #或gb2312,big5,utf8

    然后重新启动mysql

    三. 配置排序字符集

    myisamchk -r -q --set-character-set=charset

    展开全文
  • Mysql 字符集

    2013-01-10 15:23:36
    set names 可以用来更改当前会话连接的字符集,当前会话的客户端的字符集,以及档期会话返回结果集的字符集。 例如: SET NAMES 'utf8'; show collcations 查看当前支持的字符集排序规则 通过命令SET...
  • Mysql字符集

    2011-11-09 23:25:46
    数据库中关于字符集的种类有很多,个人建议,数据库字符集尽量使用utf8(utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的字符集,尽管你在命令行工具上无法正确查看...
  • 如何修改MySQL字符集

    千次阅读 2018-07-13 13:05:04
    修改MySQL字符集方法:如何修改MySQL字符集
  • 略懂 MySQL字符集

    千次阅读 2013-07-18 16:09:51
    MySQL 字符集
  • 设置MySQL字符集

    2017-03-22 14:05:49
    MySQL 字符集由服务器端和客户端两部分字符集组成,其中服务器端字符集 分为:character_set_database 数据库字符集、 character_set_server 服务器字符集、 character_set_system 系统字符集 2、设置mysql
  • 修改mysql字符集详解

    2018-06-20 18:03:30
    上一篇介绍了解决mysql乱码的问题的方法,只是简单的过了一下mysql字符集的设置,这一篇将详细的介绍mysql字符集的设置。 MySQL字符集的设置 如果在某一个级别没有设置字符集,则它会继承其上一级的字符集 ...
  • MySQL字符集设置

    千次阅读 2018-08-11 15:29:17
    MySQL字符集设置 • 系统变量: – character_set_server:默认的内部操作字符集 – character_set_client:客户端来源数据使用的字符集 – character_set_connection:连接层字符集 – character_set_results:...
  • 修改MySQL字符集

    2015-11-06 15:11:22
    1.关于MySQL字符集 MySQL的字符集支持(CharacterSet Support)有两个方面:   字符集(Characterset)和排序方式(Collation)。 MySQL对于字符集的支持细化到四个层次:服务器(server),数据库(database),数据表(table...
  • 查看 MySQL 字符集的方法

    万次阅读 2019-06-24 17:52:17
    1 MySQL字符集设置 系统变量: – character_set_server:默认的内部操作字符集 – character_set_client:客户端来源数据使用的字符集 – character_set_connection:连接层字符集 – character_set_results:...
  • MySQL字符集编码

    千次阅读 2014-08-28 00:27:29
    MySQL字符集编码总结 之前内部博客上凯哥分享了一篇关于mysql字符集的文章,之前我对mysql字符集一块基本没有深究过,看到凯哥文章后有些地方有点疑惑,遂自己去看了mysql的官方文档,并参考了凯哥的文章,总结了这篇博文...
  • MySQL字符集操作

    2016-02-22 17:04:25
    MySQL字符集包括字符集(charset)和校对规则(collation),字符集用来定义MySQL存储字符串的方式,校对规则是定义了比较字符串的方式。 一个字符集至少对应一个校对规则。 字符集设置: 有四个级别的默认设置:服务器级...
  • 使用 MySQL 时,为了让 MySQL 支持中文,需要把字符集修改为 UTF-8,方法如下: 1.查看 MySQL 字符集: // 启动 MySQL [root@localhost ~]# systemctl status mysqld.service // 登录 MySQL [root@localhost ~]# ...
  • mysql字符集更改

    2016-08-11 15:23:16
    mysql字符集更改 设置默认的数据库字符集,在配置文件中添加下面的语句 character_set_server=utf8 修改数据库字符集: ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...]; 把表...
  • mysql 字符集设置

    千次阅读 2016-03-18 13:57:38
    一、 MySQL字符集设置 (1) 系统变量: – character_set_server:默认的内部操作字符集 – character_set_client:客户端来源数据使用的字符集 – character_set_connection:连接层字符集 – character_set...
  • docker mysql 字符集设置

    2020-10-19 16:49:10
    docker mysql 字符集设置 使用 docker 启动 mysql 容器可能会出现中文乱码的情况,这里记录如何制作支持中文的 mysql 镜像 创建 my.cnf 文件 [client] default-character-set=utf8 [mysql] default-character-set=...
  • [mysql][ MySQL字符集设置及字符转换]

    千次阅读 2018-04-03 14:13:37
    [mysql][ MySQL字符集设置及字符转换] 标签(空格分隔): 未分类 在生成环境中,会经常碰到Mysql字符的设置问题,CU很多牛人都说过N次了,个人也总结下。 如果在应用开始阶段没有正确的设置字符集,在运行一段...
  • MySQL字符集问题

    2014-04-01 13:22:28
    MySQL字符集介绍   MySQL的字符集支持(Character Set Support)有两个方面: 字符集(Character set)和排序方式(Collation)。   对于字符集的支持细化到四个层次: 服务器(server), 数据库...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,065
精华内容 9,626
关键字:

mysql字符集

mysql 订阅