4,
在A情況下,如果在CLASSPTH中去掉
sun.io.CharToByteDoubleByte.class,則程序運行時,測得default character encoding為“8859-1”,否則為GBK 或GB2312。
5,
分析BROWSER程序NETSCAPE目錄下的文件
/program/java/classes/java40.jar, 發現其中沒有包括
sun.io.CharToByteDoubleByte.class,
不知這是需要升級,還是有其它方法可以解決? 盼望各位高手指導!Email: sailor@mailserv.stu.edu.cn
現在我們取得的一點小小進展,在轉換字符串時不采用default character
encoding,而是直接采用“GBK”或“GB2312”,在情況A和B底下,從DB取數據
都沒有問題,但是寫中文到DB也采用“GBK”或“GB2312”時,情況B仍是出錯的。
當我們使用老外公司開發的jdbc第四類driver獲取數據庫中文信息時,常會出現亂碼現象
,如????D.
解決辦法1:
使用interface ResultSet的方法getBytes()得到一byte[],然后由此byte[]數組產生一
新的
String,可獲得正確的漢字,但此方法有一定的局限性,在某些driver上可以實現,如
weblogic公司
開發的fastforward產品。另此種方法不規范,根據sun jdbc的標準varchar和var推薦用
getString()
方法來獲取。
解決辦法2:
使用interface ResultSet的方法getString(),這時我們得到的String一定是亂碼,如何
解決,
String temp = result.getString (s);
if (temp != null) {
byte[] b = temp.getBytes ("8859_1");
temp = new String (b);
此時的temp一定是正確的中文,,,,,,此種方法我在sybase公司開發的jconnect4上實驗成功,在fastforward上也成功。
來源:xiameng
文章來源于領測軟件測試網 http://www.kjueaiud.com/