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数据库常见的字符集介绍

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
法③登录的时候指定字符集
[[email protected] ~]# 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.系统的字符集

[[email protected] ~]# cat  /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"

11.数据库中执行sql语句的方法

a.sql语句在windows客户端改成utf8没有签名的格式
b.导入数据指定字符集的格式
mysql -uroot -poldboy123 --default-character-set=utf8 <test.sql

12.更改库字符集的思路(库的表里面已经有数据了)

说明:有数据的情况下,对新数据生效,对老数据库不生效
更改库字符集的思想
1.数据库不要更新,导出所有的数据
2.把导出的数据进行字符集的替换(替换表和库)
3.修改my.cnf,更改mysql客户端的服务端的字符集,重启生效
4.导入更改过的字符集的数据,包括表结构语句,提供服务
5.ssh客户端,以及程序更改为对应的字符集
时间: 2024-11-06 07:06:24

mysql中的字符集的相关文章

关于一些 MYSQL中的字符集概念

最近遇到mysql乱码的问题,找了些资料,先保存,后面慢慢总结自己的处理方法. 笔记: 问题环境总结: 1.前台php代码没有改变 2.原数据库,所有表的都是utf8 mysql> show variables like '%char%';+--------------------------+----------------------------------+| Variable_name            | Value                            |+---

(6)mysql中的字符集

概述 ??从本质上来讲,计算机只识别二进制代码,因此,不论计算机程序还是其处理的数据,最终都必须转化为二进制码,计算机才能识别.人们给每一个文字符号编码以便计算机识别处理,这就是计算机字符集的由来. 选择合适的字符集 MySQL5.6支持几十种字符集,包括UCS-2.UTF-16.UTF-16LE.UTF-32.UTF-8.utf8mb4等Unicode字符集,选择字符集可以考虑如下几个因素: 满足应用支持语言需求,如果应用需要处理各式各样的文字,应该选择Unicode编码,对于MySQL,建议

在window cmd中设置字符集后,mysql的测试

之前测试过,在centos下,所有字符集全部设为utf8,可以同时满足命令行和网页的需求. 在windows下,由于默认字符集为gbk,所以在命令行操作mysql时,需要设置set character_set_client = gbk; 今天发现,其实是要设置set character_set_results = gbk;即可,其它均为utf8或gbk都行. 另外尝试改变windows字符集,cmd下chcp 65001切换到utf8,但这好像是临时的,由于这次安装的wamp,用的自带的终端,c

PHP+MySQL中对UTF-8,UTF8(utf8),set names gbk 的理解

问题一:在我们进行数据库操作时会发现,数据库中表的编码用的是utf-8,但是在进行dos命令是要使用set names gbk (一)Mysql中默认字符集设置有四级:服务器级,数据库级,表级,和字段级   前三种都是默认设置,并不代表你的字段最终会使用这个字符集设置 (二)set names 这个mysql命令设置是客户端发出的命令编码,连接层编码,和服务器端返回结果的编码,相当于客户端和服务器交互用的编码,而不是数据保存的编码 问题二:在我们使用的时候:当我们set names utf 的时

MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集

MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据库字符集.character-set-table:数据库表字符集.优先级依次增加.所以一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集.character-set-client:客户端的字符

mysql中,如何查看数据库元数据(metadata)的字符集?

需求描述: mysql中,数据库的元数据也是有字符集的. 操作过程: 1.查看mysql数据库元数据的字符集 mysql> show variables like 'character_set_system'; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | character_set_system | utf8 | +-------------------

MySQL 5.6中的字符集

这篇文章介绍的是MySQL  5.6中的字符集,基本是我以前学习MySQL 5.6手册时整理而来. 概论 基础概念 字符集(character set)是编码和字符符号的映射集合.排序规则(collation)是用于比较字符集中字符的规则集. 现在我们自定义一个简单的字符集character set.假设我们有一个仅有四个字母的字母表:A.B.a.b.我们给每个字母一个数字:A = 0,B = 1,a = 2,b = 3.字母A是一个字符符号,数字0是A的编码,这四个字母和它们编码的映射就是一个

SQL Server 与MySQL中排序规则与字符集相关知识的一点总结

原文:SQL Server 与MySQL中排序规则与字符集相关知识的一点总结 字符集&&排序规则 字符集是针对不同语言的字符编码的集合,比如UTF-8字符集,GBK字符集,GB2312字符集等等,不同的字符集使用不同的规则给字符进行编码排序规则则是在特定字符集的基础上特定的字符排序方式,排序规则是基于字符集的,是对字符集在排序方式维度上的一个划分.排序规则是依赖于字符集的,一种字符集可以有多种排序规则,但是一种排序规则只能基于某一种字符集的比如中文字符集,也即汉字,可以按照“拼音排序”.“

【个人笔记】《知了堂》MySQL中的数据类型

MySQL中的数据类型 1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) 3个字节  范围(-8388608~8388607) int(m) 4个字节  范围(-2147483648~2147483647) bigint(m) 8个字节  范围(+-9.22*10的18次方) 取值范围如果加了unsigned,则最大值翻倍,如tinyint un