数据库字符编码
1、更改服务器的编码方式,在终端输入以下命令:
mysqld--character-set-server=gbk--collation-server=gbk_chinese_ci;
2、更改某个数据库的编码方式
mysql-uroot-p
_chinese_ci;
3、在创建数据库时指定编码:
mysql-uroot-p
createdatabasedb_namecharactersetgbkcollategbk_chinese_ci;
4、更改某个表的编码方式
mysql-uroot-pdb_name
altertabletable__chinese_ci;
5、在创建表时指定编码方式
mysql-uroot-pdb_name
createtabletable_name(....)charactersetgbkcollategbk_chinese_ci;
6、更改某行的编码方式
mysql-uroot-pdb_name
altertabletable_namemodifycolumn_namevarchar(20)charactersetgbkcollategbk_chinese_ci;
7、在创建列时指定编码方式:
</pre><prename="code"class="sql">mysql-uroot-pdb_name
createtabletable_name(...,col1varchar(20)charactersetgbkcollategbk_chinese_ci,...)charactersetutf8collateutf8_general_ci;
‘贰’ mysql用sql语句创建表和数据库怎么设置字符编码'
--创建数据库时,设置数据库的编码方式
--CHARACTERSET:指定数据库采用的字符集,utf8不能写成utf-8
--COLLATE:指定数据库字符集的排序规则,utf8的默认排序规则为utf8_general_ci(通过showcharacterset查看)
dropdatabaseifEXISTSdbtest;
_general_ci;
--修改数据库编码
_chinese_ci;
_general_ci;
--创建表时,设置表、字段编码
usedbtest;
droptableifexiststbtest;
createtabletbtest(
idint(10)auto_increment,
user_namevarchar(60)CHARACTERSETGBKCOLLATEgbk_chinese_ci,
emailvarchar(60),
PRIMARYkey(id)
)CHARACTERSETutf8COLLATEutf8_general_ci;
--修改表编码
_general_ci;
--修改字段编码
(60)CHARACTERSETutf8COLLATEutf8_general_ci;
--查看所有的字符编码
SHOWCHARACTERSET;
--查看创建数据库的指令并查看数据库使用的编码
showcreatedatabasedbtest;
--查看数据库编码:
showvariableslike'%char%';
--设置character_set_server、setcharacter_set_client和setcharacter_set_resultssetcharacter_set_server=utf8;--服务器的默认字符集。使用这个语句可以修改成功,但重启服务后会失效。根本的办法是修改配置MYSQL文件MY.INI,
‘叁’ mysql数据库表里中文乱码应该选哪种编码
数据库中关于字符集的种类有很多,个人建议,数据库字符集尽量使用utf8(utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的字符集,尽管你在命令行工具上无法正确查看数据库中的内容,我依然强烈建议使用utf8作为默认字符集.如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询排序等问题,可以使用binary属性约束 对编程有影响的主要是客户端字符集和数据库字符集(还有一个服务器字符集,不知道干什么用的), 数据库中常用的操作就是保存数据和读取数据,在这过程中,乱不乱码和数据库字符集貌似没有什么关系。我们只要保证写入时选择的字符集和读取时选择的字符集一致,即只需保证两次操作的客户端字符集一致即可。 x0dx0a在MySQL的客户端上执行一次查询的过程一般是,在客户端的提示符后面输入一条SQL语句,回车,然后终端显示出查询的结果。这个过程中,只有终端和三个MySQL的系统变量指定了正确的字符集,才能保证我们将一个正确的SQL语句送到服务器,然后服务器返回正确的结果,并且在终端正确显示。 x0dx0a三个MySQL的系统变量是: x0dx0a1. character_set_client,终端字符集,告诉Server客户端提交的SQL语句的编码格式 x0dx0a2. character_set_connection,连接字符集,是服务器翻译SQL语句时用到的编码格式 x0dx0a3. character_set_results,返回的结果集的字符集,是服务器返回结果集之前把结果集转换成的编码格式 x0dx0a在MySQL终端通过执行命令 show variables like ‘char%’ 可以查看这几个变量的值。这三个变量通常都设定为同一种字符集,用命令set names [charset name]就可以修改这三个变量的值。一般来说,只要你设定了能够表示你的数据的字符集,你查询的结果都可以在终端正确显示。 x0dx0a举个例子,使用的表t1是utf8编码,表中的字段c1继承了这个编码,表创建如下 x0dx0amysql> create table t1 ( c1 text not null ) character set utf8; x0dx0a用的字符是汉字“范”,gbk编码为B7 B6,utf8编码为E8 8C 83 x0dx0a用下面的SQL语句插入数据 x0dx0amysql> insert into t1 values( ‘范’); x0dx0aa)如果终端设置为utf8,并且执行了 set names utf8,那么插入到数据库中的就是“范”这个字的utf8编码,这个过程中MySQL不需要做编码转换。写入数据库的内容可以通过执行 select hex( c1 ) from t1 得到数据的十六进制编码来验证。 x0dx0ax0dx0ab)如果终端设置为 utf8,并且执行了set names gbk,那么执行完这个插入操作后,写入的二进制数据是E9 91 BC,这是“汉字“锣”的utf8编码。这是因为,终端输入的“范”用的是utf8编码,而服务器以为终端发送过来的内容是gbk编码,所以在向t1表中插入的时候进行了一次gbk到utf8的转换,结果当然是错误的。 x0dx0ax0dx0ac)如果终端设置为gbk,并且执行了set names gbk,那么执行完插入操作后,写入t1的依然是“范”这个字的utf8编码。插入过程中,终端输入的是“范”的gbk编码B7 B6,服务器被告知终端发过来的SQL语句是gbk编码(由character_set_client指定),所以在插入数据前做了一次gbk到utf8的编码转换。 x0dx0ax0dx0ad)如果终端设置为gbk,并且执行了set names utf8,那么执行完插入操作后,MySQL会报出一个数据被截断的警告。实际上,输入终端的是“范”这个字符的gbk编码B7 B6,而服务器被告知客户端发过来的SQL语句是utf8编码,所以在执行过程中没有做转码,直到插入数据的时候,发现B7 B6不符合utf8的编码规则,给出了警告信息,实际插入的数据是3F 3F,也就是两个问号。 x0dx0ax0dx0a查询的时候是同样的道理,MySQL也是根据set names设定的字符集来对返回给客户端的结果集做相应的编码转换,如果转换的结果和终端显示的字符集一致,就能正确显示,如果不一致就是乱码。 x0dx0ax0dx0a结论是,只要终端的字符集和set names指定的字符集一致就可以让MySQL在处理过程中执行正确的转码并且正确地显示。 x0dx0ax0dx0a另外,如果通过程序操作MySQL数据库, 那么也需要事先执行set names命令来指定程序希望输出的字符集。比如,用程序从一个utf8编码的数据库向另外一个gbk编码的数据库进行数据迁移,在选取源数据库数据之前,需要执行set names gbk,才能取到gbk编码的数据。
‘肆’ mysql 更改数据库字符编码的方法
mysql如何更改数据库字符编码?借助客户端工具很容易就可以更改了,下面来看一下。
打开navicat客户端工具,在左边找到要更改的数据库。
右键点击这个数据库,在菜单上点击数据库属性选项。
在弹出的属性窗口上,点击默认字符集下的下拉框。
在弹出的下拉选项里,点击选中要使用的字符集就行了,比如选择常用的utf8字符集,点击ok按钮就行了。
‘伍’ 如何查看mysql数据库字符集编码
查看MySQL数据库服务器和数据库MySQL字符集。

‘陆’ 关于mysql数据库字符编码的问题、中文乱码!
一、转码失败
在数据写入到表的过程中转码失败,数据库端也没有进行恰当的处理,导致存放在表里的数据乱码。
针对这种情况,前几篇文章介绍过客户端发送请求到服务端。
其中任意一个编码不一致,都会导致表里的数据存入不正确的编码而产生乱码。
比如下面简单一条语句:
set @a = "文本字符串";
insert into t1 values(@a);
1. 变量 @a 的字符编码是由参数 CHARACTER_SET_CLIENT 决定的,假设此时编码为 A,也就是变量 @a 的编码。
2. 写入语句在发送到 MySQL 服务端之前的编码由 CHARACTER_SET_CONNECTION 决定,假设此时编码为 B。
3. 经过 MySQL 一系列词法,语法解析等处理后,写入到表 t1,表 t1 的编码为 C。
那这里编码 A、编码 B、编码 C 如果不兼容,写入的数据就直接乱码。
二、客户端乱码
表数据正常,但是客户端展示后出现乱码。
这一类场景,指的是从 MySQL 表里拿数据出来返回到客户端,MySQL 里的数据本身没有问题。客户端发送请求到 MySQL,表的编码为 D,从 MySQL 拿到记录结果传输到客户端,此时记录编码为 E(CHARACTER_SET_RESULTS)。
那以上编码 E 和 D 如果不兼容,检索出来的数据就看起来乱码了。但是由于数据本身没有被破坏,所以换个兼容的编码就可以获取正确的结果。
这一类又分为以下三个不同的小类:
1)字段编码和表一致,客户端是不同的编码
比如下面例子, 表数据的编码是 utf8mb4,而 SESSION 1 发起的连接编码为 gbk。那由于编码不兼容,检索出来的数据肯定为乱码。
2)表编码和客户端的编码一致,但是记录之间编码存在不一致的情形
比如表编码是 utf8mb4,应用端编码也是 utf8mb4,但是表里的数据可能一半编码是 utf8mb4,另外一半是 gbk。那么此时表的数据也是正常的,不过此时采用哪种编码都读不到所有完整的数据。这样数据产生的原因很多,比如其中一种可能性就是表编码多次变更而且每次变更不彻底导致(变更不彻底,我之前的篇章里有介绍)。举个例子,表 t3 的编码之前是 utf8mb4,现在是 gbk,而且两次编码期间都被写入了正常的数据。
3)每个字段的编码不一致,导致乱码
和第二点一样的场景。不同的是:非记录间的编码不统一,而是每个字段编码不统一。举个例子,表 c1 字段 a1,a2。a1 编码 gbk,a2 编码是 utf8mb4。那每个字段单独读出来数据是完整的,但是所有字段一起读出来,数据总会有一部分乱码。
三、LATIN1
还有一种情形就是以 LATIN1 的编码存储数据
估计大家都知道字符集 LATIN1,LATIN1 对所有字符都是单字节流处理,遇到不能处理的字节流,保持原样,那么在以上两种存入和检索的过程中都能保证数据一致,所以 MySQL 长期以来默认的编码都是 LATIN1。这种情形,看起来也没啥不对的点,数据也没乱码,那为什么还有选用其他的编码呢?原因就是对字符存储的字节数不一样,比如 emoji 字符 "❤",如果用 utf8mb4 存储,占用 3 个字节,那 varchar(12) 就能存放 12 个字符,但是换成 LATIN1,只能存 4 个字符。
‘柒’ 数据库中1-1000之间字符编码是多少
一位数1个,两位数的话十位有10个1,个位有9个1,三位数百位有100个1,十位有90个1,个位有90个1,再加上1个四位数,一共是1+10+9+100+90+90+1=301个1。
ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。

字符编码
也称字集码,是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1个字节的方式存储。
‘捌’ 如何查看Oracle数据库的字符编码
1、SELECTvalue$FROMsys.props$WHEREname='NLS_CHARACTERSET';
--查询oracle相关参数
2、SELECT*FROMNLS_DATABASE_PARAMETERS;
(8)数据库字符编码扩展阅读:
OracleDatabase,又名OracleRDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。
可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。
比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
Oracle数据库最新版本为OracleDatabase12c。Oracle数据库12c引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。
此外,一些创新特性可最大限度地提高资源使用率和灵活性,如OracleMultitenant可快速整合多个数据库,而AutomaticDataOptimization和HeatMap能以更高的密度压缩数据和对数据分层。
这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c成为私有云和公有云部署的理想平台。
参考资料:Oracle数据库--网络
