Lam King Tin wrote:

Dear Jim,

Thank you very much for your reply. I have tried to replace the method with the fixed version from Connector/J 5.0 as follows. The casting exception has disappeared. However, now I always encounter below. This encoding should be the most common, right? But why this happens. Thanks.

SQL Exception:  Unsupported character encoding 'ISO8859_1'.
...

Well, more debugging shows that Connection has tried all of the configurable character encodings it knows on tests that look like this:

mysql-connector-java-3.0.17-ga/com/mysql/jdbc/Connection.java

private void configureCharsetProperties(Properties info) throws SQLException {
...
   try {
      String testString = "abc";
      testString.getBytes(this.encoding);
   } catch (UnsupportedEncodingException encodingEx) {
      throw new SQLException("Unsupported character "
            + "encoding '" + this.encoding + "'.",
         SQLError.SQL_STATE_INVALID_CONNECTION_ATTRIBUTE);
   }

And the last try must be from this:

    private boolean configureClientCharacterSet() throws SQLException {
        String realJavaEncoding = getEncoding();
        boolean characterSetAlreadyConfigured = false;

...

         if (this.encoding == null) {
             // punt?
             this.encoding = "ISO8859_1";
         }

So I look into Kaffe 1.0.6 to find out how character encodings are configured (fortunately or unfortunately depending on how you look at it, I've done a fair bit of this sort of thing before...) and we see this:

kaffe-1.0.6/libraries/javalib/kaffe/io/CharToByteConverter.java

private static CharToByteConverter getConverterInternal(String enc)
{
...
String realenc = encodingRoot + ".CharToByte" + ConverterAlias.alias(enc);

kaffe-1.0.6/libraries/javalib/kaffe/io/ConverterAlias.java

public class ConverterAlias {
    private static final Hashtable alias = new Hashtable();

    // All aliases should be upper case
    static {
   alias.put("DEFAULT",    "Default");
   alias.put("ISO-8859-1",    "8859_1");
   alias.put("ISO_8859_1",    "8859_1");
   alias.put("ISO 8859-1",    "8859_1");
   alias.put("ISO 8859_1",    "8859_1");
   alias.put("ISO_8859-1",    "8859_1");
   alias.put("ISO8859_1",     "8859_1");
   alias.put("ISO-IR-100",    "8859_1");
   alias.put("LATIN1",     "8859_1");
   alias.put("L1",         "8859_1");
   alias.put("IBM819",     "8859_1");
   alias.put("CP819",      "8859_1");
   alias.put("CSISOLATIN1",   "8859_1");
   alias.put("ISO-8859-2",    "8859_2");
   alias.put("ISO-8859-3",    "8859_3");
   alias.put("ISO-8859-4",    "8859_4");
   alias.put("ISO-8859-5",    "8859_5");
   alias.put("ISO-8859-6",    "8859_6");
   alias.put("ISO-8859-7",    "8859_7");
   alias.put("ISO-8859-8",    "8859_8");
   alias.put("ISO-8859-9",    "8859_9");
   alias.put("ISO-2022-JP",   "EUC_JP");
   alias.put("EBCDIC",     "CP1046");
   alias.put("UTF-8",      "UTF8");
   alias.put("KOI8-R",     "KOI8_R");
   /* add more here */
    }

So we see that "ISO8859_1" is not an alias kno. Try changing that line in Connector.java to use one like "ISO-8859-1". That should get you past the initial failure, but whether you'll have a working configuration may a bit doubtful.

Jim


_______________________________________________
kaffe mailing list
[email protected]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to