JDBC中的中文處理

字號:

我們在做一個JAVA的應用,不可避免地要處理中文。經(jīng)過艱苦的探索,目前有一些進展,找到了一些解決方法,但仍然面臨著無法解決的問題。在此作一整理,希望對大家有所幫助,同時請各位高手幫忙考慮我們的問題。
    背景:
    JDK 1.15
    VCafe 2.0
    JPadPro
    SERVER:
    NT IIS
    Sybase System 10
    JDBC: Jconnect
    CLIENT:
    Browser: Netscape 4.04 + Patch
    PWin95 & Pwin98 Beta3
    CLASS文件存放在 SERVER,由BROWSER 運行APPLET,APPLET只起調(diào)入FRAME類主程序的作用。界面包括Text field, Text Area,List, Choice 等。
    一,取中文
    用JDBC執(zhí)行SELECT語句從SERVER取數(shù)據(jù)(中文)后,將數(shù)據(jù)用APPEND方法加到TEXT AREA(TA),不能正確顯示。但加到LIST中時,則大部分漢字可正確顯示。
    處理:將數(shù)據(jù)按“ISO-8859-1”格式轉為字節(jié)數(shù)組,再按系統(tǒng)缺省編碼格式(default character encoding)轉為STRING,即可在TA和LIST中正確顯示。
    程序段如下:
    dbstr2 = results.getString(1);
    //*********************************************************************
    // After read result from Database server, Convert the result string.
    dbbyte1 = dbstr2.getBytes("iso-8859-1");
    dbstr1 = new String(dbbyte1);
    //*********************************************************************
    二,寫中文到DB
    處理方式與以上相逆,先將SQL語句按DEFAULT CHARACTER ENCODING轉為字節(jié)數(shù)組,再按ISO-8859-1轉為STRING,然后送執(zhí)行,則中文信息可正確寫入DB。
    sqlstmt = tf_input.getText();
    //*****************************************************************************
    // Before send statement to Database server, Convert sql statement.
    dbbyte1 = sqlstmt.getBytes();
    sqlstmt = new String(dbbyte1,"iso-8859-1");
    //*****************************************************************************
    _stmt = _con.createStatement();
    _stmt.executeUpdate(sqlstmt);
    。。。。。。