在 SQL Server 2005 中儲存中文資料時,若設定不當,常會導致中文變成「???」問號。這通常是因為資料庫排序規則與欄位資料型別不支援 Unicode 所致。以下是徹底解決的三步驟:
Chinese_PRC_CI_AS(簡體中文、不區分大小寫、區分重音、區分全半形)說明:此設定決定字串比較與排序規則,Chinese_PRC_CI_AS 是簡體中文環境最常用的排序規則。
varchar/text 改為 nvarchar/ntextnvarchar 使用 2 位元組儲存每個字元,完整支援中日韓文字為什麼不用 varchar/text? 這兩種型別僅支援非 Unicode 字元集,若資料庫排序規則不匹配,中文寫入時會轉換失敗變成問號。
重啟後,新寫入的中文資料將正常顯示,不再出現問號。
-- 建立測試表
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 字串常值