淘先锋技术网

首页 1 2 3 4 5 6 7
以MySql和DB2为例,解释一下数据库的字符集。
创建数据库时或建表时有默认的字符集,
MySql中
CREATE TABLE fuck (
id varchar(225) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

DB2中
create database ktzpdb  using codeset UTF8 territory cn

[size=small] 这样就把数据库或每张表的字符编码设为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编码格式,是不能存储中文或其他非英文字符的。
[color=red] 总之,如果用了自带的命令窗口,MySql的导入文件的编码必须和命令窗口的字符编码一致,否则里面的数据中的中文字符等无法正常识别,而DB2的命令窗口一般还是设成1386,即GBK就行,文件也是ANSI格式的,不会出错!s[/color][/size]