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

英文版 Windows + SQL Server 顯示中文完整設定指南

     編輯:關於SqlServer

無需安裝中文版作業系統:英文版 Windows + SQL Server 完美支援中文顯示與儲存

企業常選擇英文版 Windows Server (穩定性較佳) 做為資料庫主機,但預設不支援中文代碼頁。本文提供經實測的三步驟設定,啟用代碼頁 936 (GBK/簡體中文),讓 ASP/ADO 應用正確讀寫中文,避免「???」亂碼。

步驟 1:註冊代碼頁 936 至系統

  1. 複製 C_936.nls 至 C:\Windows\System32\ (來源:中文版 Windows 安裝光碟 \I386\ 或網路下載)
  2. 開啟 regedit.exe,新增兩組機碼:
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
    "936"="C_936.NLS"
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language]
    "0804"="l_intl.nls"
  3. 重開機 生效

步驟 2:重建 Master 資料庫為中文定序

  1. 啟動 SQL Server 安裝精靈 → 「重建資料庫」
  2. 選擇 字元集:Chinese_PRC_CI_AS (簡體、不區分大小寫、不區分重音)
  3. 排序規則:同字元集
  4. 完成後驗證:SELECT SERVERPROPERTY('Collation') 應回傳 Chinese_PRC_CI_AS

注意:重建 Master 會清除所有使用者資料庫、登入、作業,請先備份 master、msdb、model 及使用者資料庫。

步驟 3:ASP/ASP.NET 頁面宣告代碼頁

<%@ CodePage=936 Language=VBScript %>

<% Response.CodePage = 936; Response.Charset = "gb2312" %>

ASP.NET (web.config):

驗證測試

-- SSMS 執行
CREATE TABLE #Test (C NVARCHAR(10));
INSERT #Test VALUES (N'中文測試');
SELECT * FROM #Test;  -- 應正確顯示中文

-- ASP 頁面
Response.Write "中文測試";  -- 應正常輸出

常見坑與解法

現象原因解法
資料庫存入正常,ASP 顯示亂碼頁面未宣告 CodePage加入 <%@ CodePage=936 %>
ASP 存入資料庫變 ???連線字串缺少字碼頁Provider=SQLOLEDB;Data Source=...;Code Page=936
SSMS 查詢顯示方塊SSMS 字型不支援中文工具→選項→字型→選擇「新細明體」或「Microsoft JhengHei」
Linked Server/OPENROWSET 亂碼遠端字碼頁不一致連線字串加 Use Encryption for Data=False;CharacterSet=gb2312

現代替代方案 (SQL Server 2008+)

  • 資料庫層級定序:CREATE DATABASE ... COLLATE Chinese_PRC_CI_AS,無需重建 Master
  • 欄位層級定序:Column NVARCHAR(50) COLLATE Chinese_PRC_CI_AS
  • 一律使用 NVARCHAR + Unicode (UTF-16) 儲存,應用層傳輸 UTF-8,徹底擺脫代碼頁地獄

結語:雖然代碼頁設定能解決舊系統相容問題,但新專案強烈建議採用全 Unicode 架構 (NVARCHAR + UTF-8),一次解決所有語言顯示問題。

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