DB2字符集相信大家都有一定的认识,那么,DB2字符集对于DB2数据库来说,重要性在哪里呢?下面以MySql和DB2为例,解释一下数据库的字符集。
创建数据库时或建表时有默认的字符集
MySql中Sql代码
CREATE TABLE fuck ( id varchar(225) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE fuck ( id varchar(225) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
DB2中Sql代码
create database ktzpdbusing codeset UTF8 territory cn create database ktzpdb using codeset UTF8 territory cn
这样就把数据库或每张表的字符编码设为utf8了,当我们直接用mysql或db2自带的命令窗口去插入中文时,却不能插入,这就是命令窗口的编码问题了。
一般命令窗口的字符编码应该为gbk,这样我们才能正常的插入和显示。如Mysql中可以用配置文件my.ini制定gbk,也可以在窗口中打set names gbk;
DB2中在命令窗口中打 db2set DB2CODEPAGE=1386。当我们敲中文插数据进去时,实际上表数据就是以utf8存储的,而在命令窗口下由于设置成了gbk,我们就能正常看到中文了。
当用mysql中 source d:/insertData.sql或用db2中的db2 -tf d:/**.sql 这种执行sql文件的命令时,该sql必须和当前命令窗口的字符编码一致,就是上述的gbk,可用记事本另存为ANSI即行。如果sql编码不一致,如是utf8,那么客户端的gbk不能识别文件中的utf8编码格式,是不能存储中文或其他非英文字符的。
总之,如果用了自带的命令窗口,MySql的导入文件的编码必须和命令窗口的字符编码一致,否则里面的数据中的中文字符等无法正常识别,而DB2的命令窗口一般还是设成1386,即GBK就行,文件也是ANSI格式的,不会出错!