2016-04-01 12 views
0

Ben ile veya eğer ben herhangi bir kaydı takılmadan bu-UnsupportedCharsetException: Cp1027 DB2 ile JDBC sürücüsü

CREATE TABLE scma.timetest(
      T_TYPE VARCHAR(8), 
      T_DATE TIMESTAMP 
      ); 

gibi JDBC istemcisinden ana bilgisayarlar üzerinde IBM DB2 üzerinde tip Timestamp bir sütun ile basit bir veritabanı tablosu oluşturma bir select * from scma.timetest; yapmak Ben Damgası türü sütununu yoksa aşağıda özel durum

java.nio.charset.UnsupportedCharsetException: Cp1027 

elde sonunda, her şey gayet iyi çalışıyor. JDBC istemcisini -Dfile.encoding=UTF-8 ile boş bırakmaya çalıştım. Aynı zamanda bir Java programından denedim aynı şey, aynı hatayla sonuçlanır.

Aynı sorun, belirtilen here değil, ClassNotFoundException alamıyorum. Herhangi bir işaretçi neyin yanlış olabileceğini. z/OS için

Legacy DB2 genellikle karakter veri için (aynı zamanda CP1027 olarak da bilinir) EBCDIC kodlamasını kullanır: Bu yorumlardan burada bu Hareketli

Exception in thread "main" java.nio.charset.UnsupportedCharsetException: Cp1027 
    at java.nio.charset.Charset.forName(Charset.java:531) 
    at com.ibm.db2.jcc.am.t.<init>(t.java:13) 
    at com.ibm.db2.jcc.am.s.a(s.java:12) 
    at com.ibm.db2.jcc.am.o.a(o.java:444) 
    at com.ibm.db2.jcc.t4.cc.a(cc.java:2412) 
    at com.ibm.db2.jcc.t4.cb.a(cb.java:3513) 
    at com.ibm.db2.jcc.t4.cb.a(cb.java:2006) 
    at com.ibm.db2.jcc.t4.cb.a(cb.java:1931) 
    at com.ibm.db2.jcc.t4.cb.m(cb.java:765) 
    at com.ibm.db2.jcc.t4.cb.i(cb.java:253) 
    at com.ibm.db2.jcc.t4.cb.c(cb.java:55) 
    at com.ibm.db2.jcc.t4.q.c(q.java:44) 
    at com.ibm.db2.jcc.t4.rb.j(rb.java:147) 
    at com.ibm.db2.jcc.am.mn.kb(mn.java:2107) 
    at com.ibm.db2.jcc.am.mn.a(mn.java:3099) 
    at com.ibm.db2.jcc.am.mn.a(mn.java:686) 
    at com.ibm.db2.jcc.am.mn.executeQuery(mn.java:670) 
+0

rt.jar'ın çalışma zamanı java sınıf yolu – Rehman

+0

@Rehman'da açıkça referans verildiğinden emin olun. – User2709

+0

Hangi İşletim Sistemini kullanıyorsunuz? Bunun @Rehman – Rehman

cevap

3

helps- varsa burada tam istisna değildir. Ayrıca DB2'nin zaman damgası değerlerini istemciye karakter dizeleri olarak gönderdiğine inanıyorum. Kullandığınız Java çalışma zamanının CP1027'yi desteklemediğinden şüpheleniyorum, bu yüzden EBCDIC verilerini istemciye ne gerekirse dönüştürmeyi bilmiyor. VARCHAR değerinin neden tamamlandığını açıklayamıyorum.

DB2 kodlaması hakkında daha fazla ayrıntı için check the manual yapabilirsiniz.

Muhtemelen Java tarafından desteklenecektir farklı kodlama kullanan bir tablo oluşturmak için DB2 zorlayabilirsiniz:

CREATE TABLE scma.timetest(...) CCSID UNICODE 

diğer alternatif EBCDIC (CP1027) kodlamayı destekler farklı bir Java çalışma zamanını kullanmak olabilir. Bazı DB2 istemci paketleriyle birlikte gelen IBM JDK, iyi bir aday olacaktır.

Sen (iyi, sen değil ama anabilgisayar sistemi programcılar) ayrıca veritabanı (alt sistem) için varsayılan kodlama şemasını yapılandırabilirsiniz.

İlgili konular