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格式的,不會出錯!