mysql之全球化和本地化:字符集、校对集、中文编码问题


本文内容:

  • 什么是字符集?什么是校对集?
  • 查看字符集和校对集
  • 设置字符集和校对集
  • mysql中的中文数据问题

首发日期:2018-04-19


什么是字符集?什么是校对集?

  • 字符集是字母和符号的集合,每一个字符编码都由字符集决定。
  • 校对集是字母和符号的校对标准。校对集影响着字符的排序和搜索。

查看字符集和校对集:

  • 查看mysql支持的字符集:show character set;
  • 查看mysql支持的校对集:show collation;
  • 查看服务端默认的字符集:show variables like ‘char%‘;
  • 查看服务端默认的字符集:show variables like ‘collation%‘;

服务端默认的字符集的意义:

服务端默认的校对集的意义:


设置字符集和校对集

设置数据库数据表的字符集:

  • 实际上,字符集很少是服务器范围(甚至数据库范围)的设置。不同的表,甚至不同的列都可能需要不同的字符集,而且两者都可以在创建表时指定【语出mysql必知必会】。下面介绍不使用默认配置来创建数据库、数据表
    • 创建数据库:create database 数据库名 charset 字符集 collate 校对集;【校对集并不是必要的,每一个字符集都有默认的校对集,如果没有校对集将使用默认的】
    • 创建数据表:create table 表名 charset 字符集 collate 校对集;
    • 给某一列指定字符集和校对集:

设置服务端和客户端的字符集:

  • 语法:set character_set_xxx =字符集; 【character_set_xxx是上面查看字符集中的服务端的各个默认字符集,意义在上面已经标上了】【这种设置是会话级的,仅在当次连接生效。】
  • 如果想要永久修改服务端的字符集:windows下修改my.ini文件【就是mysql的配置文件,可以从mysql服务中查看在哪】,在mysqld中将character-set-server的值修改为指定的字符集【修改的是服务端的字符集】

补充:

  • 不可永久配置服务端认为客户端的字符集,每一个连接过来的客户端的字符集都是不确定的,应该由客户端设置当次连接的字符集来指定字符集。

mysql中的中文数据问题:

  • mysql中的中文数据问题本质上还是字符集问题,想要识别和存储中文数据,必须设置能编码中文的字符集。
  • gbk和utf8都是支持mysql的,一般都是将mysql的字符集更改成utf8来识别中文。
  • 如何配置(以gbk为例):
    • 首先要考虑的一个是:如果你使用命令行模式,默认情况下字符的编码格式是gbk的,也就是说客户端的数据编码是gbk的;
    • 如果服务端要识别客户端传来的中文,那么需要设置服务端认为客户端的字符集为gbk;set character_set_client =‘gbk‘;
    • 如果服务端要返回中文给客户端,需要将服务端返回给客户端的数据的字符集设置为gbk;set character_set_results =‘gbk‘;
    • 对于单次会话,可以直接使用set names = ‘gbk‘;【执行set names= ‘gbk‘就是把character_set_client、character_set_connection、character_set_results这3个参数值都设为gbk】


mysql之全球化和本地化:字符集、校对集、中文编码问题

原文地址:https://www.cnblogs.com/progor/p/8878904.html

时间: 2024-11-16 15:06:41

mysql之全球化和本地化:字符集、校对集、中文编码问题的相关文章

mysql之字符集与校对集

一.字符集 1.mysql的字符集设置非常灵活 可以设置服务器默认字符集: 数据库默认字符集: 表默认字符集: 列字符集: 如果某一级别没有指定字符集,则继承上一级. 查看所有字符集语句:show character set; 2.以表声明为utf-8为例,最终存储在表中的数据为utf-8 ①我们要告诉服务器,我给你发送的数据是什么编码?character_set_client ②告诉字符集转换器,转换成什么编码?character_set_connection ③查询的结果用什么编码?char

MySQL的字符集(Character Set)和校对集(Collate)

遇到一个创建数据库的SQL语句 CREATE DATABASE testdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 注意:这里指定字符集是用utf8,而不是utf-8. 对上面的SQL语句中的CHARACTER SET 和 COLLATE产生了兴趣. 简单来说,CHARACTER SET是指字符集,而COLLATE是指校对集(可以理解为排序规则). 1.Character Set 1.1.字符集的4个层次 mysql4.1及其之后

mysql概要(九)字符集和校对集

1.mysql 字符集有细致设置: 2.mysql字符处理机制是:数据库和客户端之间存在一个字符集转换器(后文简称转换器)将客户端字符编码(必须告诉服务端的)转换成一种中间编码的数据(可自定义的但保证转换不会丢失数据),然后再转换成数据库定义的编码,取数据时,转换器将中间编码转换为需要的返回编码(可自定义). 设置通知服务端客户端的字符编码类型 3.出现乱码和丢失的情况 其实上面的所说编码,包括编码和解码. 查询支持的字符集种类: 4.校对集:对字符进行排序规则.一种字符集可有多种校对集. 4.

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

字符集的概念大家都清楚,校对规则很多人不了解,一般数据库开发中也用不到这个概念,mysql在这方便貌似很先进,大概介绍一下简要说明 字符集和校对规则 字符集是一套符号和编码.校对规则是在字符集内用于比较字符的一套规则. MySql在collation提供较强的支持,oracel在这方面没查到相应的资料. 不同字符集有不同的校对规则,命名约定:以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)._cs(大小写敏感)或_bin(二元)结束 校对规则一般分为两类: binary

21_字符集与校对集

字符集与校对集 create table 表名( 列声明 )charset utf8; 上面这个charset utf8指定服务器字符类型. ----------------------------------------------- 字符集: mysql的字符集设置非常灵活. 可以设置服务器默认字符集, 可以设置数据库默认字符集, 表默认字符集, 列字符集, 如果某一个级别没有指定字符集,则继承上一级. 1.告诉服务器,我给你发的数据是什么编码的?set character_set_clie

Mysql中校对集utf8_unicode_ci与utf8_general_ci的区别

一直对utf8_unicode_ci与utf8_general_ci这2个校对集很迷惑,今天查了手册有了点眉目.不过对中文字符集来说采用utf8_unicode_ci与utf8_general_ci时有何区别还是不清楚? 下面摘录一下Mysql 5.1中文手册中关于utf8_unicode_ci与utf8_general_ci的说明: 当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法.一些字符还是不能支持.并且,不能完全支持组合的记号.这主要影响越南和俄罗斯的一些

mysql中的字符集和校对规则(mysql校对集)

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

MySQL之字符集-校对规则

一.字符集(Character set) 是多个字符(英文字符,汉字字符,或者其他国家语言字符)的集合,字符集种类较多,每个字符集包含的字符个数不同. 特点: ①字符编码方式是用一个或多个字节表示字符集中的一个字符 ②每种字符集都有自己特有的编码方式,因此同一个字符,在不同字符集的编码方式下,会产生不同的二进制 常见字符集: ASCII字符集:基于罗马字母表的一套字符集,它采用1个字节的低7位表示字符,高位始终为0. LATIN1字符集:相对于ASCII字符集做了扩展,仍然使用一个字节表示字符,

MySQL校对集

一.校对集概念 校对集是数据比较的方式,当数据产生比较的时候,校对集发挥作用. 二.三种格式 1._bin:binary,二进制比较,取出二进制位,一位一位的比较(区分大小写). 2._cs:case sensitive,大小写敏感(区分大小写). 3._ci:case insensitice,大小写不敏感(不区分大小写). 三.注意: 校对集必须在表中没有数据前声明才能生效,如果表中有了数据,修改SQL:ALTER TABLE 表名 COLLATE = 校对集; 四.常用汉字拼音首字母排序 1