對 text 數據類型不支持代碼頁轉換。從: 1252 到: 936
| 層面 | 原資料庫 | 目標環境 |
|---|---|---|
| 語系 | 英語(美國) | 簡體中文(中國) |
| LCID | 0x409 | 0x804 |
| 排序規則 | Latin1_General | Chinese_PRC |
| 代碼頁 | 1252 (Western European) | 936 (GBK) |
text / ntext / image 等大型物件型別**不支援**代碼頁轉換,僅 char/varchar 支援。
-- 將 text 改為 varchar(max) (SQL Server 2005+)
ALTER TABLE my_table ALTER COLUMN my_col varchar(max);
varchar(max) 支援代碼頁轉換,且儲存上限 2GB。
-- 僅影響新建表/欄位
ALTER DATABASE my_db COLLATE Chinese_PRC_CI_AS;
text → varchar(max)、排序規則 → 目標規則<?php
// 讀取時手動轉碼
$str = iconv('CP1252', 'GBK//IGNORE', $row['text_col']);
// 或
$str = mb_convert_encoding($row['text_col'], 'GBK', 'CP1252');
utf8mb4 / Latin1_General_100_CI_AS_SC)text/ntext,**改用 varchar(max)/nvarchar(max)