Mysql基础之字符集与乱码

原文:Mysql基础之字符集与乱码

Mysql的字符集设置非常灵活

可以设置服务器默认字符集

数据库默认字符集

表默认字符集

列字符集

如果某一个级别没有指定字符集,则继承上一级.

以表声明utf8为例:

存储的数据在表中,最终是utf8;

1:告诉服务器,我给你发送的数据是什么编码的? character_set_client

2:告诉转换器,转换成什么编码? Character_set_connection

3:查询的结果用什么编码? Character_set_results

如果以上3者都为字符集N, 则可以简写为 set names N

推论: 什么时将会乱码?

1: client声明与事实不符

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

什么时间将会丢失数据?

Connetion和服务器的字符集比client小时.

校对集: 指字符集的排序规则

一种字符集可以有一个或多个排序规则.

以Utf8为例, 我们默认使的utf8_general_ci 规则,也可以按二进制来排, utf8_bin

怎么样声明校对集?

Create table ()... Charset utf8 collate utf8_general_ci;

注意:声明的校对集必须是字符集合法的校对集.

时间: 2024-10-06 22:51:08

Mysql基础之字符集与乱码的相关文章

为 MySQL 设置默认字符集(UTF-8)避免产生乱码

环境:Windows 7+Wamp Server+MySQL 5.7.9 查看MySQL默认编码: SHOW VARIABLES LIKE 'character%' character_set_client为客户端编码方式 character_set_connection为建立连接使用的编码 character_set_database数据库的编码 character_set_results结果集的编码 character_set_server数据库服务器的编码 只要保证统采用的编码方式一致,就

Mysql命令操作字符集乱码问题

1.mysql服务连接上后,我们需要对其命令行的操作,首先显示mysql数据库, a.显示系统的数据库信息命令:show database b.其命令是:create database mydb;  c.选用该创建出来的数据库信息,其命令是:use  mydb d.插入数据,要注意的是字符编码问题,由于配置数据库的编码格式不支持中文,所以会发生乱码问题,如图所示:  所以目前只能支持英文的,如图: e.查询表中的数据,如图: 2.想要解决数据库语言格式,我们需要做的, a.查看字符编码命令:sh

趁一切还来得及【一】数据库MySQL基础知识及编译安装

此情更待成追忆,只是当时已惘然.                                        --[唐]李商隐 第一章 数据库概述及分类特点应用 1.1 数据库种类.语言处理.典型产品 ①数据库的理解:就是一个存放数据的仓库,这个仓库是按照一定的数据结构,来组织和存储的.可以通过数据库提供的多种方法来管理数据库. ②数据库的种类:按照早期的数据库理论分为层次数据库.网络式数据库.和关系型数据库.当今互联网最常用的就是关系型数据库和非关系型数据库(NOSQL). ③关系型数据库:

MySQL基础实战

一.数据库基础: DBMS:数据库管理系统(Database Management System) RDBMS:关系数据库管理系统(Relational Database Management System) C/S:通过专有协议 关系模型:表(行,列),二维关系 范式:第一范式,第二范式,第三范式: 关系运算: 选择 投影 数据库:表,索引,视图(虚表) SQL:结构化查询语言 DDL:数据定义语言 DML:数据操作语言 编程接口: 自行定义存储过程 自行定义存储函数 触发器: 时间调度器:类

mysql基础和数据库的优化

Mysql基础... 4 Mysql介绍... 4 登录mysql mysql –u root –p[掌握]... 4 SQL语言... 4 DCL. 4 grant. 4 revoke. 4 DDL. 4 建库... 4 删库... 4 建表... 4 看表结构... 5 删表... 5 修改表... 5 DML[重点]... 5 增加... 5 删除... 5 修改... 5 查看... 5 排序... 5 总数... 5 求和... 5 平均... 6 最大... 6 最小... 6 表连

MYSQL基础笔记(三)-表操作基础

数据表的操作 表与字段是密不可分的. 新增数据表 1 Create table [if not exists] 表名( 2 字段名 数据类型, 3 字段名 数据类型, 4 字段n 数据类型 --最后一行不需要加逗号 5 )[表选项]; If not exists:如果表名不存在,那么就创建,否则不执行创建代码,实现检查功能. 表选项:控制表的表现 1.字符集:charset/character 具体字符集:--保证表中数据存储的字符集. 2.校对集:collate 具体校对集: 3.存储引擎:e

mysql导入导出数据中文乱码解决方法小结

inux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如下面的代码: 复制代码 代码如下: mysqldump -uroot -p --default-character-set=utf8 dbname tablename > bak.sql 那么导入数据的时候也要使用--

通过g++查询到的mysql中文数据输出是乱码

这几天遇到一个问题: 通过g++查询到的mysql中文数据输出是乱码,而通过g++添加到mysql中的中文数据也是乱码,但单独通过g++输出正常,查询通过mysql添加的中文数据显示也正常. 在网查查询了很久,纠结了半天也没有找到答案.后来通过在linux吧发帖终于找到了解决方案.原来是mysql和g++默认字符集不匹配产生的问题.通过在代码中添加 int mysql_set_character_set(MYSQL *mysql, char *csname)函数终于解决了问题. 源码如下: #i

MYSQL基础笔记(二)-SQL基本操作

SQL基本操作 基本操作:CRUD,增删改查 讲SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: 1 Create database 数据库名字[库选项]: 库选项:用来约束数据库,分为两个选项:1.字符集设定:charset/character set 具体字符集(数据存储的编码格式,中文常用字符集gbk和utf8.).2.校对集设定:collate 具体校对集(数据比较的规则). 例如: 其中:数据库名字不能