db2 codepage

首先分两个层面,DB2 CODEPAGE和OS CODEPAGE(DB2SET DB2CODEPAGE相当于设定了当前实例的OS的CODEPAGE)

Linux系统查看CODEPAGE的方法:在终端输入locale
windows查看CODEPAGE方法:在cmd.exe输入chcp,或者右键cmd.exe属性查看。
如果DB2SET DB2CODEPAGE了,这个值的优先级比OS的CODEPAGE高,下面讲的OS CODEPAGE是指没有设置DB2SET DB2CODEPAGE,如果设置了这个实例变量,那么下面讲到的OS CODEPAGE都以实例变量为准

如果是SELECT,显示到屏幕的CODEPAGE会经过这样的转换,DB2 CODEPAGE→OS CODEPAGE→你使用的客户端的CODEPAGE(如果客户端和OS CODEPAGE不一致,会出现乱码,但这只是显示上的乱码,真正的数据没有被破坏),这些转换的基础是字符集之间可以转换,有些字符集之间不能转换,可以查看http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.nls.doc/doc/r0004565.html

EXPORT导出的数据默认使用OS CODEPAGE进行存储(你可以通过改变客户端的CODEPAGE来查看这些文件,如果客户端的CODEPAGE和文件存储的CODEPAGE不符,会出现乱码)
IMPORT默认认为导入文件是以OS CODEPAGE存储的(如果文件存储使用的CODEPAGE和OS CODEPAGE不一致,入库后的数据会被破坏,出现乱码,只能重新导入)
LOAD默认认为导入文件时以DB2 CODEPAGE存储的(如果文件存储使用的CODEPAGE和DB2 CODEPAGE不一致,入库后的数据会被破坏,出现乱码,只能重新导入)


所以最保险的就是在导出和导入时都显示指定CODEPAGE(除非数据库的CODEPAGE和指定的CODEPAGE不能转换)

原文地址:https://www.cnblogs.com/xiaojianblogs/p/6336802.html