最近一段時間常常有人問起我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),就不會出現上述問題了.
php
轉載自:http://ahuango.iteye.com/blog/555065html
常常用DB2 CLI 鏈接數據庫時遇到這樣的錯誤,每次都是網上現查,此次決定把查到的方法記在這裏。 具體錯誤是這樣的:
SQL0332N 不支持從源代碼頁 "819" 到目標代碼頁 "1386" 的字符轉換。SQLSTATE=57017
由於要鏈接的數據庫的編碼"819"與本地客戶端環境使用的編碼"1386"不能進行轉換,即不能在GBK和ISO-8859-1之間進行轉換。
要解決此方法可使用以下命令:
sql
DB2SET windows
DB2CODEPAGE=819 服務器
DB2 jsp
TERMINATE ui
DB2STOP 編碼
FORCE spa
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-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)