最近一段时间经常有人问起我db2codepage相关的一个问题:
用户有多个数据库,服务器端数据库代码页CODEPAGE设置的不一样,常见的设置是819,1252,1208,1386等.客户端连接服务器数据库经常报代码页转换错误 ,大致错误信息格式: SQL0332N 不支持从源代码页 "1252" 到目标代码页 "1386" 的字符转换。SQLSTATE=57017临时解决方法是:在客户端,开启DB2命令窗口并执行以下命令后再重新进行连接db2set db2codepage=1252db2 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的方法:在终端输入localewindows查看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.htmlEXPORT导出的数据默认使用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 --代码页查询列表
37 (=x0025) EBCDIC US English273 (=x0111) EBCDIC German277 (=x0115) EBCDIC Danish/Norwegian278 (=x0116) EBCDIC Finnish/Swedish280 (=x0118) EBCDIC Italian284 (=x011C) EBCDIC Spanish285 (=x011D) EBCDIC UK English297 (=x0129) EBCDIC French300 (=x012C) EBCDIC Japanese DBCS301 (=x012D) Japanese PC DBCS420 (=x01A4) EBCDIC Arabic424 (=x01A8) EBCDIC Arabic437 (=x01B5) PC-ASCII US500 (=x01F4) EBCDIC International803 (=x0323) Hebrew Set A813 (=x032D) ISO8859-7 Greek819 (=x0333) ISO8859-1 Western European833 (=x0341) IBM-833: Korean834 (=x0342) IBM-834: Korean Host DBCS835 (=x0343) EBCDIC Traditional Chinese DBCS836 (=x0344) EBCDIC Simplified Chinese SBCS838 (=x0346) EBCDIC Thai SBCS850 (=x0352) ISO8859-1 Western European852 (=x0354) PC-ASCII Eastern European855 (=x0357) PC-ASCII Cyrillic856 (=x0358) PC-ASCII Hebrew857 (=x0359) PC-ASCII Turkish858 (=x035A) PC-ASCII Western European with Euro860 (=x035C) PC-ASCII Portuguese861 (=x035D) PC-ASCII Icelandic862 (=x035E) PC-ASCII Hebrew863 (=x035F) PC-ASCII Canadian French864 (=x0360) PC-ASCII Arabic865 (=x0361) PC-ASCII Scandinavian866 (=x0362) PC-ASCII Cyrillic #2868 (=x0364) PC-ASCII Urdu869 (=x0365) PC-ASCII Greek870 (=x0366) EBCDIC Eastern Europe871 (=x0367) EBCDIC Icelandic872 (=x0368) PC-ASCII Cyrillic with Euro874 (=x036A) PC-ASCII Thai SBCS875 (=x036B) EBCDIC Greek880 (=x0370) EBCDIC Cyrillic891 (=x037B) IBM-891: Korean897 (=x0381) PC-ASCII Japan Data SBCS903 (=x0387) PC Simplified Chinese SBCS904 (=x0388) PC Traditional Chinese Data - SBCS912 (=x0390) ISO8859-2 Eastern European915 (=x0393) ISO8859-5 Cyrillic916 (=x0394) ISO8859-8 Hebrew918 (=x0396) EBCDIC Urdu920 (=x0398) ISO8859-9 Turkish921 (=x0399) ISO Baltic922 (=x039A) ISO Estonian923 (=x039B) ISO8859-15 Western Europe with euro (Latin 9)924 (=x039C) EBCDIC Western Europe with euro927 (=x039F) PC Traditional Chinese DBCS928 (=x03A0) PC Simplified Chinese DBCS930 (=x03A2) EBCDIC Japanese Katakana/Kanji mixed932 (=x03A4) Japanese OS/2933 (=x03A5) EBCDIC Korean Mixed935 (=x03A7) EBCDIC Simplified Chinese Mixed937 (=x03A9) EBCDIC Traditional Chinese Mixed939 (=x03AB) EBCDIC Japanese Latin/Kanji mixed941 (=x03AD) Japanese PC DBCS - for open systems942 (=x03AE) Japanese PC Data Mixed - extended SBCS943 (=x03AF) Japanese PC Mixed - for open systems944 (=x03BO) Korean PC data Mixed - extended SBCS946 (=x03B2) Simplified Chinese PC data Mixed - extended SBCS947 (=x03B3) PC Traditional Chinese DBCS948 (=x03B4) PC Traditional Chinese Mixed - extended SBCS949 (=x03B5) PC Korean Mixed - KS code950 (=x03B6) PC Traditional Chinese Mixed - big5951 (=x03B7) PC Korean DBCS - KS code970 (=x03CA) euc Korean1004 (=x03EC) PC Data Latin11006 (=x03EE) ISO Urdu1008 (=x03F0) ASCII Arabic 8-bit ISO1025 (=x0401) EBCDIC Cyrillic1026 (=x0402) EBCDIC Turkish1027 (=x0403) EBCDIC Japanese Latin1040 (=x0410) IBM-1040: Korean1041 (=x0411) Japanese PC - extended SBCS1042 (=x0412) PC Simplified Chinese - extended SBCS1043 (=x0413) PC Traditional Chinese - extended SBCS1046 (=x0416) PC-ASCII Arabic1047 (=x0417) IBM-1047: Western European1051 (=x041B) ASCII roman8 for HP Western European1088 (=x0440) PC Korean SBCS - KS code1089 (=x0441) ISO8859-6 Arabic1097 (=x0449) EBCDIC Farsi1098 (=x044A) PC-ASCII Farsi1112 (=x0458) EBCDIC Baltic (Latvian/Lithuanian)1114 (=x045A) PC Traditional Chinese - big 5 SBCS1115 (=x045B) PC Simplified Chinese SBCS1122 (=x0462) EBCDIC Estonian1123 (=x0463) EBCDIC Ukrainian1124 (=x0464) UNIX-ASCII Ukrainian1131 (=x046B) PC-ASCII Belarus1140 (=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-21208 (=x04B8) Unicode - UTF-81250 (=x04E2) Windows - Eastern European1251 (=x04E3) Windows - Cyrillic1252 (=x04E4) Windows - Western European1253 (=x04E5) Windows - Greek1254 (=x04E6) Windows - Turkish1255 (=x04E7) Windows - Hebrew1256 (=x04E8) Windows - Arabic1257 (=x04E9) Windows - Baltic Rim1275 (=x04FB) Apple - Western European1280 (=x0500) Apple - Greek1281 (=x0501) Apple - Turkish1282 (=x0502) Apple - Eastern European1283 (=x0503) Apple - Cyrillic1284 (=x0504) IBM-504: Eastern European1285 (=x0505) IBM-505: Eastern European1363 (=x0553) Windows Korean PC Mixed including 11,172 full hangul1364 (=x0554) Korean Host Mixed extended including 11,172 full hangul1380 (=x0564) PC Simplified Chinese DBCS1381 (=x0565) PC Simplified Chinese Mixed1383 (=x0567) euc Simplified Chinese Mixed1386 (=x056A) PC Simplified Chinese Data GBK Mixed1388 (=x056C) DBCS Host Simplified Chinese Data GBK Mixed5346 (=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)