You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中如何将GB2312编码文本转换为WINDOWS-1251并保存?

解决方案:GB2312转WINDOWS-1251编码(SQL Server)

1. 配置目标列

WINDOWS-1251是单字节编码,对应SQL Server的VARCHAR类型和Cyrillic_General_CI_AS排序规则。先准备好目标列:

新建列

ALTER TABLE YourTable ADD WIN1251_Column VARCHAR(MAX) COLLATE Cyrillic_General_CI_AS;

修改现有列(先备份数据)

ALTER TABLE YourTable ALTER COLUMN TargetColumn VARCHAR(MAX) COLLATE Cyrillic_General_CI_AS;

2. 执行编码转换

SQL Server通过CONVERT函数结合代码页ID实现编码转换:

  • GB2312对应代码页936
  • WINDOWS-1251对应代码页1251

转换需先将GB2312文本转成Unicode(NVARCHAR)作为中间层,再转成WINDOWS-1251编码的VARCHAR:

更新到新列

UPDATE YourTable
SET WIN1251_Column = CONVERT(VARCHAR(MAX), CONVERT(NVARCHAR(MAX), GB2312_SourceColumn) COLLATE Cyrillic_General_CI_AS, 1251);

替换原列数据(已修改排序规则后)

UPDATE YourTable
SET GB2312_SourceColumn = CONVERT(VARCHAR(MAX), CONVERT(NVARCHAR(MAX), GB2312_SourceColumn), 1251);

3. 关键注意事项

  • 字符丢失风险:GB2312的中文字符大多不在WINDOWS-1251字符集内,转换后会变成?占位符。先抽样验证数据,确认可接受此结果再批量转换。
  • 备份优先:转换前一定要备份表数据,避免操作失误导致数据丢失。
  • 长度适配:如果原列是固定长度VARCHAR(n),建议先用VARCHAR(MAX)测试转换后的长度,再调整目标列长度。

内容的提问来源于stack exchange,提问作者Vicc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:06:29