![](/img/trans.png)
[英]Convert utf-8 encoded varbinary(max) data to nvarchar(max) string
[英]cast to NVARCHAR(MAX) causes "chinese"/UTF encoded characters
我在 SELECT 语句中使用这样的代码:
CAST(HASHBYTES(N'SHA1', Bla) AS NVARCHAR(MAX)) AS hashed_bla
并在 ssms 网格以及上游应用程序中以“中文”/UTF 编码字符结束。 有没有办法改变这种情况? 这与整理有关吗? 谢谢!
你所拥有的正在按预期工作。 以下面的例子为例:
SELECT HASHBYTES('SHA1','B8187F0D-5DBA-4D43-95FC-CD5A009DB98C');
这将返回varbinary
值0xA04B9CB18A2DC4BC08B83FCCE48A0AF1A1390756
。 然后您将该值转换为nvarchar
,因此得到类似N'䮠놜ⶊ별레찿諤㦡嘇'
(根据我的整理)。 对于varbinary
每 4 个字符代表一个字符。 因此,对于上面的A04B
是第一个字符(即N'䮠'
)。
看来您所追求的是一个表示varbinary
值的varchar
(此处不需要nvarchar
,因为将没有 unicode 字符)。 为此,您需要使用CONVERT
和样式代码。 对于我上面给出的示例,它将是:
SELECT CONVERT(varchar(100),HASHBYTES('SHA1','B8187F0D-5DBA-4D43-95FC-CD5A009DB98C'),1);
它返回varchar
值'0xA04B9CB18A2DC4BC08B83FCCE48A0AF1A1390756'
。 如果您不想在'0x'
使用'0x'
,请使用样式代码2
,而不是1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.