mysql中常见的字符集_mysql中的字符集

二进制安装的数据库可能会有乱码的问题,编译安装的数据库指定默认utf-8的不会产生乱码

1.编译安装的字符集情况查看字符集的格式

mysql> show  create  table  sanlang  \G

*************************** 1. row ***************************

Table: sanlang

Create Table: CREATE TABLE `sanlang` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

mysql>

插入数据

mysql> insert into  sanlang  values(22,"刘海笑");

Query OK, 1 row affected (0.00 sec)

测试

mysql> select * from sanlang;

+------+-----------+

| id   | name      |

+------+-----------+

|    1 | xiaoming  |

|    2 | xiaoli    |

|    3 | tt        |

|    4 | gg        |

|   22 | testdata  |

|   22 | 刘海笑    |

+------+-----------+

6 rows in set (0.00 sec)

mysql>

更改字符集测试(更改字符集以后可以看出id为22的出现乱码):mysql> set  names  gbk ;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from sanlang;

+------+----------+

| id   | name     |

+------+----------+

|    1 | xiaoming |

|    2 | xiaoli   |

|    3 | tt       |

|    4 | gg       |

|   22 | testdata |

|   22 | Ц        |

+------+----------+

6 rows in set (0.10 sec)

mysql>

2.mysql数据库常见的字符集介绍

3e4cc31f8b4fbbbf0e499b09e0152813.png

3.MYSQL如何选择合适的字符集1.如果处理各种各样的文字,发布到不同一眼国家地区,mysql来说UTF-8(每个汉字三个自己),如果应用需要处理英文,仅有少量汉字utf8更好

2.如果只需要支持中文,并且数据量很大,性能要求也很高,可选GBK(订场,每个汉字占用双字节,英文也占双字节),如需大量的运算,

比较排序等,定长字符集,更快,性能高

3.处理移动互联网业务,可能需要使用utf8MP4的字符集

4.老师建议:没有特别的需求,就选择utf8的字符集

4.查看系统字符集mysql> show  character set ;

mysql> show  variables  like 'character_set%';

+--------------------------+-------------------------------------------+

| 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       | /application/mysql-5.5.49/share/charsets/ |

+--------------------------+-------------------------------------------+

8 rows in set (0.00 sec)

mysql>

5.set names 控制客户端的字符集

可以看出set  names只是控制了客户端的字符集mysql> show  variables  like 'character_set%';

+--------------------------+-------------------------------------------+

| 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       | /application/mysql-5.5.49/share/charsets/ |

+--------------------------+-------------------------------------------+

8 rows in set (0.00 sec)

mysql> set  name  gbk;

mysql> show  variables  like 'character_set%';

+--------------------------+-------------------------------------------+

| Variable_name            | Value                                     |

+--------------------------+-------------------------------------------+

| character_set_client     | gbk                                       |

| character_set_connection | gbk                                       |

| character_set_database   | utf8                                      |

| character_set_filesystem | binary                                    |

| character_set_results    | gbk                                       |

| character_set_server     | utf8                                      |

| character_set_system     | utf8                                      |

| character_sets_dir       | /application/mysql-5.5.49/share/charsets/ |

+--------------------------+-------------------------------------------+

8 rows in set (0.00 sec)

6.客户端字符集统一1.客户端字符集统一

法①set  names  utf8

法②下面三个命令代替set  names(其实就是更改了client的字符集)

SET  character_set_client  = gbk

SET character_set_connection = gbk

SET character_set_results = gbk

法③登录的时候指定字符集

[root@oldboy ~]# mysql -uroot -poldboy123 -S  /data/3306/mysql.sock   --default-character-set=utf8;

法④通过修改my.cnf  实现修改mysl客户端的字符集,并且永久生效

[client]

default-character-set = utf8   #不需要重启服务,退出登录就生效

备注:多实例修改客户端 字符集要修改/etc/my.cnf

7.更改mysql服务端的字符集按照要求修改my.cnf参数

[mysqld]

default-character-set = utf8    #适合5.1以及以前的版本

character-set-server = utf8      #适合5.5

8.创建库的时候指定字符集mysql> create  database  oldboy  CHARACTER SET  gbk  COLLATE gbk_chinese_ci;

说明:建表的时候指定字符集,如果不指定字符集,那么表和库的字符一样

9.程序也要统一程序和库表的字符集统一

10.系统的字符集[root@oldboy ~]# cat  /etc/sysconfig/i18n

LANG="zh_CN.UTF-8"

11.数据库中执行sql语句的方法a.sql语句在windows客户端改成utf8没有签名的格式

b.导入数据指定字符集的格式

mysql -uroot -poldboy123 --default-character-set=utf8 

12.更改库字符集的思路(库的表里面已经有数据了)说明:有数据的情况下,对新数据生效,对老数据库不生效

更改库字符集的思想

1.数据库不要更新,导出所有的数据

2.把导出的数据进行字符集的替换(替换表和库)

3.修改my.cnf,更改mysql客户端的服务端的字符集,重启生效

4.导入更改过的字符集的数据,包括表结构语句,提供服务

5.ssh客户端,以及程序更改为对应的字符集

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值