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

如何将CP 1049编码字符正确解码为目标字符串?

如何在SQL Server中正确解码CP 1049编码的字符串

你的问题出在char()函数的使用逻辑上:char(0xEA)这类调用会按照数据库默认代码页(比如常见的CP1251)解析十六进制值,导致字符映射错误,后续再指定排序规则也无法修正已经错了的字符。

正确解法:直接基于CP 1049字节序列转换

将CP 1049的十六进制字节以VARBINARY形式传入,再通过COLLATE指定对应编码的排序规则,让SQL Server按CP 1049规则解析字节:

declare @out table (id int not null identity, string varchar(128))
insert into @out(string)
select cast(0xEAe0F6e0EFe8 as varchar(6)) collate Cyrillic_General_CI_AS
select * from @out
GO

补充说明

  • 0xEAe0F6e0EFe8是你提供的CP 1049编码字节的十六进制形式(对应\''ea\''e0\''f6\''e0\''ef\''e8去掉转义后的字节)。
  • Cyrillic_General_CI_AS排序规则基于CP 1049代码页,能正确映射这些字节到对应的西里尔字符,最终得到预期的кацапи。

替代方案(逐字符映射Unicode)

如果需要手动指定Unicode码点,也可以直接用NCHAR拼接(适合短字符串):

select NCHAR(0x043A) + NCHAR(0x0430) + NCHAR(0x0446) + NCHAR(0x0430) + NCHAR(0x043F) + NCHAR(0x0438) as decoded_string

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:10:28