最近一段时间经常有人问起我db2codepage相关的一个问题:
用户有多个数据库,服务器端数据库代码页CODEPAGE设置的不一样,常见的设置是819,1252,1208,1386等.
客户端连接服务器数据库经常报代码页转换错误 ,大致错误信息格式:
SQL0332N 不支持从源代码页 "1252" 到目标代码页 "1386" 的字符转换。
SQLSTATE=57017
临时解决方法是:
在客户端,开启DB2命令窗口并执行以下命令后再重新进行连接
db2set db2codepage=1252
db2 terminate
因为目标数据库代码页很多种,这样需要经常设置db2codepage进行切换.
即使这样,如果不是使用命令行处理器,而是使用db2cc的话,中文显示还是不正常。
根本原因分析:
DB2要求源代码页与目标代码页是彼此兼容的。在上述例子中,源代码页为1252,目标代码页为1386,两者并不兼容才导致了数据库连接失败.
long term solution:其实最重要的是我们创建数据库选择代码页有问题,如果我们服务器端创建数据库的时候,能设置codepage 为1208的话(UTF-8),就不会出现上述问题了.
转载自:http://ahuango.iteye.com/blog/555065
经常用DB2 CLI 连接数据库时遇到这样的错误,每次都是网上现查,这次决定把查到的方法记在这里。 具体错误是这样的:
SQL0332N 不支持从源代码页 "819" 到目标代码页 "1386" 的字符转换。SQLSTATE=57017
因为要连接的数据库的编码"819"与本地客户端环境使用的编码"1386"不能进行转换,即不能在GBK和ISO-8859-1之间进行转换。
要解决此方法可以使用如下命令:
Java代码
DB2SET
DB2CODEPAGE=819
DB2
TERMINATE
DB2STOP
FORCE
DB2START
http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.msg.doc/doc/sql0332.htm
SQL0332N
不支持从源代码页 源代码页 到目标代码页 目标代码页 的字符转换。
说明:
操作失败,因为 源代码页 与 目标代码页 之间不存在代码页转换。这可能是由下列其中一个原因引起的:
源代码页与目标代码页的字符指令表不兼容,因此,当源代码页与目标代码页之间进行转换时,这可能会导致字符丢失和毁坏。
不支持此特定代码页转换。
可能会导致此错误的某些操作包括:
将客户机连接至数据库,而客户机的代码页与数据库代码页不相同。
执行 SQL 语句,客户机的代码页与数据库代码页不相同。
导入或导出 WSF 或 IXF 文件,而该文件的代码页与数据库代码页不相同。
联合系统用户:数据源不支持指定的代码页转换。
用户响应:
使源代码页与目标代码页互相兼容。使用“代码集地域代码”这一短语来搜索 DB2 信息中心(http://publib.boulder.ibm.com/infocenter/db2luw/v9),以便了解受支持的 DB2 代码页的兼容性。要将客户机的代码页设置为与数据库代码页兼容:
在 Unix 平台上,将 LANG、LC_CTYPE 或 LC_ALL 环境变量设置为这样一种语言环境: 其代码页与数据库代码页相兼容。请查阅平台文档,以便了解有效的语言环境名称以及与每个语言环境名称相关联的代码页。
在 Windows 平台上,设置 DB2CODEPAGE 注册表变量,以使用一个与数据库代码页兼容的值来覆盖客户机的代码页。
要了解数据库管理器代码页支持,请使用“代码集地域代码”这一短语来搜索 DB2 信息中心(http://publib.boulder.ibm.com/infocenter/db2luw/v9)。对于联合系统用户,请参阅《联合系统指南》以了解数据源代码页。如果源代码页与目标代码页兼容,则说明 DB2 当前不支持此特定的代码页转换。请与技术服务代表联系以确定是否可以添加这种支持。
DB2 UDB iSeries 版的用户应该知道:具有 CCSID 65535 的字符列或图形列是不受支持的。必须将使用 CCSID 65535 的字符列或图形列转换为受支持的 CCSID(使用 CAST 来进行转换)之后,才能使用 DB2 Connect 来访问这些列。
sqlcode:332
sqlstate:57017
http://www.db2china.net/home/space.php?uid=32727&do=blog&id=12488
首先分两个层面,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不能转换)
http://falchion.iteye.com/blog/196901
DB2 CODEPAGE --代码页查询列表
http://www.itdata.cn/bbs/dispbbs.asp?boardid=6&id=928
37 (=x0025) EBCDIC US English
273 (=x0111) EBCDIC German
277 (=x0115) EBCDIC Danish/Norwegian
278 (=x0116) EBCDIC Finnish/Swedish
280 (=x0118) EBCDIC Italian
284 (=x011C) EBCDIC Spanish
285 (=x011D) EBCDIC UK English
297 (=x0129) EBCDIC French
300 (=x012C) EBCDIC Japanese DBCS
301 (=x012D) Japanese PC DBCS
420 (=x01A4) EBCDIC Arabic
424 (=x01A8) EBCDIC Arabic
437 (=x01B5) PC-ASCII US
500 (=x01F4) EBCDIC International
803 (=x0323) Hebrew Set A
813 (=x032D) ISO8859-7 Greek
819 (=x0333) ISO8859-1 Western European
833 (=x0341) IBM-833: Korean
834 (=x0342) IBM-834: Korean Host DBCS
835 (=x0343) EBCDIC Traditional Chinese DBCS
836 (=x0344) EBCDIC Simplified Chinese SBCS
838 (=x0346) EBCDIC Thai SBCS
850 (=x0352) ISO8859-1 Western European
852 (=x0354) PC-ASCII Eastern European
855 (=x0357) PC-ASCII Cyrillic
856 (=x0358) PC-ASCII Hebrew
857 (=x0359) PC-ASCII Turkish
858 (=x035A) PC-ASCII Western European with Euro
860 (=x035C) PC-ASCII Portuguese
861 (=x035D) PC-ASCII Icelandic
862 (=x035E) PC-ASCII Hebrew
863 (=x035F) PC-ASCII Canadian French
864 (=x0360) PC-ASCII Arabic
865 (=x0361) PC-ASCII Scandinavian
866 (=x0362) PC-ASCII Cyrillic #2
868 (=x0364) PC-ASCII Urdu
869 (=x0365) PC-ASCII Greek
870 (=x0366) EBCDIC Eastern Europe
871 (=x0367) EBCDIC Icelandic
872 (=x0368) PC-ASCII Cyrillic with Euro
874 (=x036A) PC-ASCII Thai SBCS
875 (=x036B) EBCDIC Greek
880 (=x0370) EBCDIC Cyrillic
891 (=x037B) IBM-891: Korean
897 (=x0381) PC-ASCII Japan Data SBCS
903 (=x0387) PC Simplified Chinese SBCS
904 (=x0388) PC Traditional Chinese Data - SBCS
912 (=x0390) ISO8859-2 Eastern European
915 (=x0393) ISO8859-5 Cyrillic
916 (=x0394) ISO8859-8 Hebrew
918 (=x0396) EBCDIC Urdu
920 (=x0398) ISO8859-9 Turkish
921 (=x0399) ISO Baltic
922 (=x039A) ISO Estonian
923 (=x039B) ISO8859-15 Western Europe with euro (Latin 9)
924 (=x039C) EBCDIC Western Europe with euro
927 (=x039F) PC Traditional Chinese DBCS
928 (=x03A0) PC Simplified Chinese DBCS
930 (=x03A2) EBCDIC Japanese Katakana/Kanji mixed
932 (=x03A4) Japanese OS/2
933 (=x03A5) EBCDIC Korean Mixed
935 (=x03A7) EBCDIC Simplified Chinese Mixed
937 (=x03A9) EBCDIC Traditional Chinese Mixed
939 (=x03AB) EBCDIC Japanese Latin/Kanji mixed
941 (=x03AD) Japanese PC DBCS - for open systems
942 (=x03AE) Japanese PC Data Mixed - extended SBCS
943 (=x03AF) Japanese PC Mixed - for open systems
944 (=x03BO) Korean PC data Mixed - extended SBCS
946 (=x03B2) Simplified Chinese PC data Mixed - extended SBCS
947 (=x03B3) PC Traditional Chinese DBCS
948 (=x03B4) PC Traditional Chinese Mixed - extended SBCS
949 (=x03B5) PC Korean Mixed - KS code
950 (=x03B6) PC Traditional Chinese Mixed - big5
951 (=x03B7) PC Korean DBCS - KS code
970 (=x03CA) euc Korean
1004 (=x03EC) PC Data Latin1
1006 (=x03EE) ISO Urdu
1008 (=x03F0) ASCII Arabic 8-bit ISO
1025 (=x0401) EBCDIC Cyrillic
1026 (=x0402) EBCDIC Turkish
1027 (=x0403) EBCDIC Japanese Latin
1040 (=x0410) IBM-1040: Korean
1041 (=x0411) Japanese PC - extended SBCS
1042 (=x0412) PC Simplified Chinese - extended SBCS
1043 (=x0413) PC Traditional Chinese - extended SBCS
1046 (=x0416) PC-ASCII Arabic
1047 (=x0417) IBM-1047: Western European
1051 (=x041B) ASCII roman8 for HP Western European
1088 (=x0440) PC Korean SBCS - KS code
1089 (=x0441) ISO8859-6 Arabic
1097 (=x0449) EBCDIC Farsi
1098 (=x044A) PC-ASCII Farsi
1112 (=x0458) EBCDIC Baltic (Latvian/Lithuanian)
1114 (=x045A) PC Traditional Chinese - big 5 SBCS
1115 (=x045B) PC Simplified Chinese SBCS
1122 (=x0462) EBCDIC Estonian
1123 (=x0463) EBCDIC Ukrainian
1124 (=x0464) UNIX-ASCII Ukrainian
1131 (=x046B) PC-ASCII Belarus
1140 (=x0474) EBCDIC USA, with euro (like 037)
1141 (=x0475) EBCDIC Austria, Germany, with euro (like 273)
1142 (=x0476) EBCDIC Denmark, Norway, with euro (like 277)
1143 (=x0477) EBCDIC Finland, Sweden, with euro (like 278)
1144 (=x0478) EBCDIC Italy, with euro (like 280)
1145 (=x0479) EBCDIC Spain, with euro (like 284)
1146 (=x047A) EBCDIC UK, with euro (like 285)
1147 (=x047B) EBCDIC France, with euro (like 297)
1148 (=x047C) EBCDIC International, with euro (like 500)
1149 (=x047D) EBCDIC Iceland, with euro (like 871)
1200 (=x04B0) Unicode - UCS-2
1208 (=x04B8) Unicode - UTF-8
1250 (=x04E2) Windows - Eastern European
1251 (=x04E3) Windows - Cyrillic
1252 (=x04E4) Windows - Western European
1253 (=x04E5) Windows - Greek
1254 (=x04E6) Windows - Turkish
1255 (=x04E7) Windows - Hebrew
1256 (=x04E8) Windows - Arabic
1257 (=x04E9) Windows - Baltic Rim
1275 (=x04FB) Apple - Western European
1280 (=x0500) Apple - Greek
1281 (=x0501) Apple - Turkish
1282 (=x0502) Apple - Eastern European
1283 (=x0503) Apple - Cyrillic
1284 (=x0504) IBM-504: Eastern European
1285 (=x0505) IBM-505: Eastern European
1363 (=x0553) Windows Korean PC Mixed including 11,172 full hangul
1364 (=x0554) Korean Host Mixed extended including 11,172 full hangul
1380 (=x0564) PC Simplified Chinese DBCS
1381 (=x0565) PC Simplified Chinese Mixed
1383 (=x0567) euc Simplified Chinese Mixed
1386 (=x056A) PC Simplified Chinese Data GBK Mixed
1388 (=x056C) DBCS Host Simplified Chinese Data GBK Mixed
5346 (=x14E2) Windows-Eastern European with Euro (like 1250)
5347 (=x14E3) Windows - Cyrillic with Euro (like 1251)
5348 (=x14E4) Windows-Western European with Euro (like 1252)
5349 (=x14E5) Windows-Windows - Greek with Euro (like 1253)
5350 (=x14E6) Windows - Turkish with Euro (like 1254)
5351 (=x14E7) Windows - Hebrew with Euro (like 1255)
5352 (=x14E8) Windows - Arabic with Euro (like 1256)
5353 (=x14E9) Windows - Baltic Rim with Euro (like 1257)
5354 (=x14EA) 'Windows - Vietnamese with Euro (like 1258)