对MySQL中字符集的相关设置操作的基本教程

1、查看字符集相关变量

mysql> show variables like 'character%';
+————————–+——————————-+

| Variable_name      | Value             |

+————————–+——————————-+

| character_set_client   | latin1            |

| character_set_connection | latin1            |

| character_set_database  | latin1            |

| character_set_filesystem | binary            |

| character_set_results  | latin1            |

| character_set_server   | latin1            |

| character_set_system   | utf8             |

| character_sets_dir    | c:\wamp\mysql\share\charsets\ |

+————————–+——————————-+

2、字符集转换过程
客户端——–字符集转换器———–服务
gbk ————gbk-utf8-utf8———-utf8
gbk————-gbk-gbk-utf8———-utf8
客户端要告诉服务端使用的编码是什么,然后没有直接告诉服务器而告诉“转换器”
字符集转换器收到客户端信息后查看服务器是什么编码,然后将客户端传来的字符集转换成服务器设置的字符集
服务器向客户端发送信息时也是先告诉“转换器”

3、字符集变量解释

character_set_client                     
客户端字符集,连接mysql的客户端程序的字符集,该变量告诉转换器客户端发送的字符集。

character_set_connection
转换器转换要转换成的字符集

character_set_server
服务端使用的字符集,存入数据时使用的字符集

character_set_results
查询的结果是什么编码

推论:什么时候会出现乱码

1:client 什么与实际不符,微软命令提示符默认是gbk,如果设置成utf8就会出现乱码

2:results与客户端页面不符的时候

什么时候会丢失数据

connection和服务器的字符集比client小时,会丢失数据,比如客户端是utf8而转换器是gbk

当客户端是utf8 而服务端是 gbk时要设置

set character_set_client=utf8

set character_set_connection=gbk/utf8 这里设置什么都可以,因为最终转换器会根据服务器的类型进行转换

set character_set_results=utf8

4、设置字符集变量

set names utf8     进入mysql设置所用的字符集

在my.conf中添加

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8

5.修改mysql字符集
将latin1字符集的数据库修改成gbk字符集的数据库的过程
(1)、导出表结构

mysqldump -uroot -p –default-character-set=gbk -d DATABASE_NAME > createtable.sql

–default-character-set=gbk 表示以什么字符集连接
        -d 表示只导出表结构,不导出数据
(2)、修改createtable.sql文件中的表结构定义的字符集为新字符集
(3)、导出所有记录

mysqldump -uroot -p –quick –no-create-info –extend-insert –default-character-set DATABASE_NAME > data.sql

–quick:改讯息用于转储大的表。它强制mysqldump从服务器一次一行的检索表中的行二不是检索所有行,并在输出钱将它缓存到内存中
        –extended-insert:使用包括几个values列表的多行insert语法。这样转储文件更小,重载文件时可以加速插入
        –no-create-info:不重新创建每个转储表的create table 语句
        –default-character-set=latin1:安装原有的字符集导出所有数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码
(4)、带宽data.sql,将set names latin1 修改成set names gabk
(5)、使用新的字符集创建新的数据库

create database DATABASE_NAME default charset gbk;

(6)、创建表,执行createtable.sql

mysql -uroot -p DATABASE_NAME < createtable.sql

(7)、导入数据,执行data.sql

mysql -uroot -p DATABASE_NAME < data.sql
(0)

相关推荐

  • Mysql5 字符集编码问题解决

    我们遵循的标准是,数据库,表,字段和页面或文本的编码要统一起来 很多mysql数据库工具(除了phpmyadmin,我偶尔用,功能强速度慢)都不支持创建时指定数据库编码,当然可以改my.ini来解决这个问题,但是需要重新启动mysql,不过用下面的语句会更有效 GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; UTF8: CREATE DATABASE `test2` DEFAULT CHAR

  • mysql字符集和校对规则(Mysql校对集)

    简要说明 字符集和校对规则 字符集是一套符号和编码.校对规则是在字符集内用于比较字符的一套规则. MySql在collation提供较强的支持,oracel在这方面没查到相应的资料. 不同字符集有不同的校对规则,命名约定:以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)._cs(大小写敏感)或_bin(二元)结束 校对规则一般分为两类: binary collation,二元法,直接比较字符的编码,可以认为是区分大小写的,因为字符集中'A'和'a'的编码显然不同. 字符集

  • MySQL字符集 GBK、GB2312、UTF8区别 解决MYSQL中文乱码问题

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

  • 深入Mysql字符集设置分析

    基本概念 • 字符(Character)是指人类语言中最小的表义符号.例如'A'.'B'等: • 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding).例如,我们给字符'A'赋予数值0,给字符'B'赋予数值1,则0就是字符'A'的编码: • 给定一系列字符并赋予对应的编码后,所有这些字符和编码对组成的集合就是字符集(Character Set).例如,给定字符列表为{'A','B'}时,{'A'=>0, 'B'=>1}就是一个字符集: •

  • 对MySQL中字符集的相关设置操作的基本教程

    1.查看字符集相关变量 mysql> show variables like 'character%'; +--------–+-----------+ | Variable_name | Value | +--------–+-----------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set

  • MySQL 中字符集详细介绍

    目录 MySQL 中的 UTF8 修改MySQL数据库的编码 字符集的比较规则 MySQL查询时区分大小写 MySQL 中的 UTF8 在 MySQL 中, utf8 编码格式有点特殊, 它不是我们通常用到的 utf8, 而是 utf8mb3 编码的缩写. 而 utf8mb4 才是我们常说的那个 utf8. utf8mb3:阉割过的 utf8 字符集, 只使用 1-3 个字节表示字符. utf8mb4:正宗的 utf8 字符集, 使用 1-4 个字节表示字符. 通常情况下, utf8mb3 和

  • MySQL中ROUND函数进行四舍五入操作陷阱分析

    本文实例讲述了MySQL中ROUND函数进行四舍五入操作陷阱.分享给大家供大家参考,具体如下: 在MySQL中, ROUND 函数用于对查询结果进行四舍五入,不过最近使用ROUND函数四舍五入时意外发现并没有预期的那样,本文将这一问题记录下来,以免大家跟我一样犯同样的错误. 问题描述 假如我们有如下一个数据表 test ,建表语句如下 CREATE TABLE test ( id int(11) NOT NULL AUTO_INCREMENT, field1 bigint(10) DEFAULT

  • MySQL中锁的相关问题

    锁分类: 从对数据操作的粒度分 : 表锁:操作时,会锁定整个表.行锁:操作时,会锁定当前操作行. 从对数据操作的类型分: 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响.写锁(排它锁):当前操作没有完成之前,它会阻断其他客户端的 行表锁特点: MyISAM 表锁: 如何加表锁 MyISAM 在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE.DELETE. INSERT 等)前,会自动给涉及的表加写锁,这个过程并不需要用户干预,因此,

  • MySQL中索引的定义以及操作新手教程

    目录 索引的定义 索引的类型 普通.唯一.主键和全文索引 普通索引(INDEX) 唯一索引(UNIQUE INDEX) 主键索引(PRIMARY KEY) 全文索引(FULLTEXT) 单列索引和组合索引 聚集索引和非聚集索引 索引的创建原则 索引操作 创建索引 查看索引 删除索引 总结 索引的定义 数据库中的索引就像一本书的目录,可以据此快速定位数据库中相关数据的所在位置. 在数据库中,索引被定义为一种特殊的数据结构,由数据库中的一列或多列组合而成,可以用来快速查询数据表中某一特定值的记录.

  • MySQL中实现插入或更新操作(类似Oracle的merge语句)

    如果需要在MySQL中实现记录不存在则insert,不存在则update操作.可以使用以下语句: 更新一个字段: INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,1,columnA) 更新多个字段: INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KE

  • MySQL中的binary类型使用操作

    本文主要向大家介绍了MySQL数据库之MySQL的binary类型操作,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 示例数据表: CREATE TABLE test_bin ( bin_id BINARY(16) NOT NULL ) Engine=InnoDB; 插入数据(内容是一个32位的UUID字符串值): INSERT INTO test_bin(bin_id) VALUES(UNHEX('FA34E10293CB42848573A4E39937F479'));

  • python环境中的概念conda中与环境相关指令操作

    目录 1.虚拟环境 2.虚拟环境的作用 3.什么是conda 4.环境相关指令 1.查看包 2.查看conda版本 3.查看环境 4.创建新的环境 5.环境切换 6.退出此环境 7.删除环境 1.虚拟环境 它是一个虚拟化的概念,从电脑独立开辟出来的环境.通俗的来讲,虚拟环境就是借助虚拟机来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互相隔离,互不影响 2.虚拟环境的作用 在一些项目开发中,我们需要一些项目的框架,但是可能

  • MySQL中Update、select联用操作单表、多表,及视图与临时表的区别

    一.MySQL中使用从表A中取出数据来更新表B的内容 例如:要update表data中的一些列属性,但是修改属性的内容来源是来自表chanpin.SQL语言中不要显示的出现select关键字 update data d,chanpin c set d.zhulei=c.zhulei,d.xiaolei=c.xiaolei,d.fenxiang=c.fenxiang,d.zhuanye=c.zhuanye,d.jiliang=c.jiliang,d.gs=c.zgs,d.xzgs=c.zgs,d.

  • TensorFlow和keras中GPU使用的设置操作

    1. 训练运行时候指定GPU 运行时候加一行代码: CUDA_VISIBLE_DEVICES=1 python train.py 2. 运行过程中按需或者定量分配GPU tensorflow直接在开启Session时候加几行代码就行,而Keras指定GPU,并限制按需用量和TensorFlow不太一样,因为keras训练是封装好的,不好对Session操作.如下是两种对应的操作. keras中的操作: import os import tensorflow as tf from keras.ba

随机推荐