Skip site navigation (1) Skip section navigation (2)

Re: [PATCHES] patch for character set encoding detection for JDBC

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Barry Lind <barry(at)xythos(dot)com>
Cc: pgsql-interfaces(at)postgresql(dot)org, pgsql-patches(at)postgresql(dot)org
Subject: Re: [PATCHES] patch for character set encoding detection for JDBC
Date: 2000-12-22 03:08:57
Message-ID: 200012220308.WAA25030@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-interfacespgsql-patches
Thanks.  Applied.

*** ./Connection.java.orig	Thu Dec 21 18:20:36 2000
--- ./Connection.java	Thu Dec 21 18:21:49 2000
***************
*** 125,132 ****
      PG_HOST = host;
      PG_STATUS = CONNECTION_BAD;
  
-     encoding = info.getProperty("charSet");  // could be null
-     
      // Now make the initial connection
      try
        {
--- 125,130 ----
***************
*** 265,274 ****
        // This may cause some clients to break when they assume anything other than ISO,
        // but then - they should be using the proper methods ;-)
        //
        //
        firstWarning = null;
        
!       ExecSQL("set datestyle to 'ISO'");
        
        // Initialise object handling
        initObjectTypes();
--- 263,346 ----
        // This may cause some clients to break when they assume anything other than ISO,
        // but then - they should be using the proper methods ;-)
        //
+       // We also ask the DB for certain properties (i.e. DatabaseEncoding at this time)
        //
        firstWarning = null;
        
!       java.sql.ResultSet initrset = ExecSQL("set datestyle to 'ISO'; select getdatabaseencoding()");
! 
!       String dbEncoding = null;
!       //retrieve DB properties
!       if(initrset.next()) {
! 
!         //handle DatabaseEncoding
!         dbEncoding = initrset.getString(1);
!         //convert from the PostgreSQL name to the Java name
!         if (dbEncoding.equals("SQL_ASCII")) {
!           dbEncoding = "ASCII";
!         } else if (dbEncoding.equals("UNICODE")) {
!           dbEncoding = "UTF8";
!         } else if (dbEncoding.equals("LATIN1")) {
!           dbEncoding = "ISO8859_1";
!         } else if (dbEncoding.equals("LATIN2")) {
!           dbEncoding = "ISO8859_2";
!         } else if (dbEncoding.equals("LATIN3")) {
!           dbEncoding = "ISO8859_3";
!         } else if (dbEncoding.equals("LATIN4")) {
!           dbEncoding = "ISO8859_4";
!         } else if (dbEncoding.equals("LATIN5")) {
!           dbEncoding = "ISO8859_5";
!         } else if (dbEncoding.equals("LATIN6")) {
!           dbEncoding = "ISO8859_6";
!         } else if (dbEncoding.equals("LATIN7")) {
!           dbEncoding = "ISO8859_7";
!         } else if (dbEncoding.equals("LATIN8")) {
!           dbEncoding = "ISO8859_8";
!         } else if (dbEncoding.equals("LATIN9")) {
!           dbEncoding = "ISO8859_9";
!         } else if (dbEncoding.equals("EUC_JP")) {
!           dbEncoding = "EUC_JP";
!         } else if (dbEncoding.equals("EUC_CN")) {
!           dbEncoding = "EUC_CN";
!         } else if (dbEncoding.equals("EUC_KR")) {
!           dbEncoding = "EUC_KR";
!         } else if (dbEncoding.equals("EUC_TW")) {
!           dbEncoding = "EUC_TW";
!         } else if (dbEncoding.equals("KOI8")) {
!           dbEncoding = "KOI8_R";
!         } else if (dbEncoding.equals("WIN")) {
!           dbEncoding = "Cp1252";
!         } else {
!           dbEncoding = null;
!         }
!       }
! 
! 
!       //Set the encoding for this connection
!       //Since the encoding could be specified or obtained from the DB we use the
!       //following order:
!       //  1.  passed as a property
!       //  2.  value from DB if supported by current JVM
!       //  3.  default for JVM (leave encoding null)
!       String passedEncoding = info.getProperty("charSet");  // could be null
! 
!       if (passedEncoding != null) {
!         encoding = passedEncoding;
!       } else {
!         if (dbEncoding != null) {
!           //test DB encoding
!           try {
!             "TEST".getBytes(dbEncoding);
!             //no error the encoding is supported by the current JVM
!             encoding = dbEncoding;
!           } catch (UnsupportedEncodingException uee) {
!             //dbEncoding is not supported by the current JVM
!             encoding = null;
!           }
!         } else {
!           encoding = null;
!         }
!       }
        
        // Initialise object handling
        initObjectTypes();
[ Charset UTF-8 unsupported, skipping... ]

[ Charset UTF-8 unsupported, skipping... ]


-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman(at)candle(dot)pha(dot)pa(dot)us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

In response to

pgsql-patches by date

Next:From: Tatsuo IshiiDate: 2000-12-22 08:10:01
Subject: Re: Re: [PATCHES] A Patch for MIC to EUC_TW code converting inmbsupport
Previous:From: Barry LindDate: 2000-12-22 02:45:48
Subject: patch for character set encoding detection for JDBC

pgsql-interfaces by date

Next:From: Peter MountDate: 2000-12-22 08:38:08
Subject: RE: [INTERFACES] Bugs in 7.1beta JDBC dɥٕ
Previous:From: Barry LindDate: 2000-12-22 02:45:48
Subject: patch for character set encoding detection for JDBC

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group