程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 關於SQLServer中ntext字段類型的亂碼問題

關於SQLServer中ntext字段類型的亂碼問題

編輯:關於SqlServer

使用jdbc-odbc橋讀取SQLServer數據庫的ntext字段出現亂碼的原因與解決方法2008-04-23 15:35在用java對數據庫的操作時免不了要用到jdbc,而我們最常用到的驅動自然是數據庫廠商提供的純Java的jdbc連接器,不僅是因為使用方便,運行速度更快,而且它與本地系統沒有什麼關系。但是除了一些常用數據庫廠商會提供jdbc驅動,一些Excel,txt,Access卻不會有這些jdbc驅動,因此想要提供更多對數據的支持,用odbc就是一個不錯的辦法。在很早的時候就是通過jdbc-odbc橋來實現數據庫的連接與操作的。  以前連接SQLServer數據庫都是用的MS提供的JDBC驅動,因此有些問題根本就沒有遇到。但是要做一個嚴謹的系統,不能因為以前沒有遇到而忽視現在發現的問題。就是在使用JDBC-ODBC橋連接SQLServer數據庫的時候,ntext字段讀取出來的中文成了亂碼。不僅僅有這個區別,用JDBC-ODBC橋時,使用getObject()方法無法讀取uniqueidentifIEr,text,nchar等很多字段,讀取出來的為null,但是用特定的getString()方法卻是正常的。出現這麼多問題,都是以前用純JDBC驅動所沒有發現的。前面的問題容易解決,大不了判斷一下字段的類型,然後選擇相應的方法來讀取數據。但是讀取ntext字段的時候出現的問題,卻很頭痛。用純jdbc是不會有這個問題的,就是因為用了jdbc-odbc。ntext數據類型在SQLServer裡面比較特別,它是一個可以存儲2G的文本UNICODE字符,由於經過UNICODE編碼,於是讀取出來的時候也是需要進行相應的轉換。  開始的時候用普通的方法rs.getString(i)是沒有用的,後來用rs.getBytes(i),然後再用gb2312,gbk,utf-8,iso-8859-1進行轉換依然是亂碼。在感覺沒有辦法的時候,使用utf-16,utf-16be,utf-16le繼續試驗,終於在使用utf-16le的時候出現了正常的文本信息。看來SQLServer在將文本信息存放到ntext字段中使用的utf-16le的方法,問題解決,但還需要解決的是當有標點和字母等其他字符時,還是會出現亂碼,還是有待解決啊!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved