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

SQL Server中如何将字符串转为UTF16小端序十六进制?

在SQL Server中将字符串转换为UTF-16 Little Endian格式的十六进制

默认使用CONVERT(VARBINARY(MAX), 'P384992')得到的是单字节编码的十六进制结果,这是因为不带N前缀的字符串属于VARCHAR类型,会采用数据库默认的单字节字符编码转换。要获取UTF-16 Little Endian格式的十六进制,需要利用SQL Server中NVARCHAR类型的特性——它的底层存储就是UTF-16 Little Endian编码。

解决方案

直接使用带N前缀的Unicode字符串进行转换:

SELECT CONVERT(VARBINARY(MAX), N'P384992') AS key

或者先将普通字符串转换为NVARCHAR类型,再转成二进制:

SELECT CONVERT(VARBINARY(MAX), CAST('P384992' AS NVARCHAR(MAX))) AS key

结果验证

执行上述语句后,得到的结果正是所需的:

0x5000330038003400390039003200

原理说明

  • 带N前缀的字符串会被识别为NVARCHAR类型,SQL Server对NVARCHAR的存储采用UTF-16 Little Endian编码,每个字符占用2个字节。
  • 将NVARCHAR转换为VARBINARY时,会直接输出其底层的字节序列,因此得到每个字符对应两个字节的十六进制结果,符合UTF-16 Little Endian的格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:42:34