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

解決 SQL Server 2005 插入中文變問號的完整方案

     編輯:關於SqlServer

在 SQL Server 2005 中儲存中文資料時,若設定不當,常會導致中文變成「???」問號。這通常是因為資料庫排序規則與欄位資料型別不支援 Unicode 所致。以下是徹底解決的三步驟:

核心解決步驟

1. 修改資料庫排序規則為中文支援

  • 在 SSMS 中右鍵點擊目標資料庫 → 「屬性」 → 「選項」
  • 將 排序規則 設定為 Chinese_PRC_CI_AS(簡體中文、不區分大小寫、區分重音、區分全半形)
  • 點擊「確定」套用變更

說明:此設定決定字串比較與排序規則,Chinese_PRC_CI_AS 是簡體中文環境最常用的排序規則。

2. 將中文欄位資料型別改為 Unicode 型別

  • 在資料表設計檢視中,將需儲存中文的欄位型別從 varchar/text 改為 nvarchar/ntext
  • 關鍵點:修改前請先備份並清空表內資料,否則現有資料可能已損毀無法恢復
  • nvarchar 使用 2 位元組儲存每個字元,完整支援中日韓文字

為什麼不用 varchar/text? 這兩種型別僅支援非 Unicode 字元集,若資料庫排序規則不匹配,中文寫入時會轉換失敗變成問號。

3. 重啟 SQL Server 服務生效

  • 在「SQL Server 組態管理員」中重啟 SQL Server (MSSQLSERVER) 服務
  • 或透過「服務」管理工具 (services.msc) 重啟對應服務

重啟後,新寫入的中文資料將正常顯示,不再出現問號。

驗證測試

-- 建立測試表
CREATE TABLE TestChinese (
    ID INT PRIMARY KEY,
    Content NVARCHAR(100)
);

-- 插入中文測試
INSERT INTO TestChinese VALUES (1, N'測試中文資料');
INSERT INTO TestChinese VALUES (2, N'包含英文 ABC 123');

-- 查詢驗證
SELECT * FROM TestChinese;

若結果正常顯示中文,即表示問題已解決。

常見誤區提醒

  • 錯誤做法:只改排序規則不改欄位型別,或只改欄位型別不改排序規則
  • 正確做法:兩者必須同時設定,且重啟服務
  • 插入語法:使用 N'中文字串' 前綴明確指定 Unicode 字串常值
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved