首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

SQL Server 代碼頁轉換錯誤:text 型別不支援 1252→936 轉換

     編輯:PHP 綜合知識

錯誤訊息

對 text 數據類型不支持代碼頁轉換。從: 1252 到: 936

原因分析

層面原資料庫目標環境
語系英語(美國)簡體中文(中國)
LCID0x4090x804
排序規則Latin1_GeneralChinese_PRC
代碼頁1252 (Western European)936 (GBK)

text / ntext / image 等大型物件型別**不支援**代碼頁轉換,僅 char/varchar 支援。

解決方案

方案 1:變更欄位型別(推薦)

-- 將 text 改為 varchar(max) (SQL Server 2005+)
ALTER TABLE my_table ALTER COLUMN my_col varchar(max);

varchar(max) 支援代碼頁轉換,且儲存上限 2GB。

方案 2:資料庫層級變更排序規則

-- 僅影響新建表/欄位
ALTER DATABASE my_db COLLATE Chinese_PRC_CI_AS;

方案 3:匯出/匯入重建

  1. 產生腳本(結構+資料)
  2. 修改腳本中 text → varchar(max)、排序規則 → 目標規則
  3. 在目標環境執行腳本

方案 4:應用層轉碼(不修改資料庫)

<?php
// 讀取時手動轉碼
$str = iconv('CP1252', 'GBK//IGNORE', $row['text_col']);
// 或
$str = mb_convert_encoding($row['text_col'], 'GBK', 'CP1252');

預防建議

  • 新專案**統一使用 UTF-8**(utf8mb4 / Latin1_General_100_CI_AS_SC)
  • 避免使用 text/ntext,**改用 varchar(max)/nvarchar(max)
  • 跨語系遷移前先評估排序規則相容性
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved