首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

新手除錯手記:解決 SQL Server JDBC 中文亂碼問題

     編輯:關於SqlServer

問題現象

使用 Microsoft SQL Server 2000 JDBC Driver 讀取中文資料時,輸出變成亂碼(如 ??,??'???'+???)。

根本原因

SQL Server 2000 提供兩類字元資料型別:

  • Unicode 型別:nchar, nvarchar, ntext — 使用雙位元組儲存,不受代碼頁影響。
  • 非 Unicode 型別:char, varchar, text — 依賴單/雙位元組代碼頁,中英文混雜易導致編碼不匹配。

JDBC 驅動預設按代碼頁解碼,若資料庫欄位為非 Unicode 型別且存入中文,讀取時極易亂碼。

解決方案

  1. 修改資料表結構:將需存儲中文的欄位改為 nvarchar、nchar 或 ntext。
  2. 重新匯入資料:確保資料以 Unicode 形式寫入。
  3. 驗證:再次執行 Java 程式,中文輸出即正常。

補充建議

  • 新建資料庫時預設定序選擇支援 Unicode 的排序規則(如 Chinese_PRC_CI_AS)。
  • 應用層連接字串可加入 sendStringParametersAsUnicode=true(視驅動版本而定)。
  • 避免在 Java 端手動轉碼,資料庫層面統一用 Unicode 最省心。

自此,中文存取問題徹底解決,無需在程式碼中處理編碼轉換。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved