小编Gee*_*_SO的帖子

为什么在 SQL Server 中将 Base64 字符串解码为 NVARCHAR 时会得到错误的字符?

我一直在研究如何使用 SQL Server 解码 Base64,在网上搜索了许多解决方案(一些来自此处)后,似乎基于这种方法。

SELECT CAST(CAST('Base64StringHere' as XML ).value('.','varbinary(max)') AS VARCHAR(250))
Run Code Online (Sandbox Code Playgroud)

当我有 ASCII 文本时,这非常有效。但是,当我有以下法语文本时,它会损坏(大概是由于 VARCHAR 的限制)。

Où est le café le plus proche?
T8O5IGVzdCBsZSBjYWbDqSBsZSBwbHVzIHByb2NoZT8=
Run Code Online (Sandbox Code Playgroud)

并提供以下输出。

Où est le café le plus proche?
Run Code Online (Sandbox Code Playgroud)

我认为相对简单的解决方法是将 to 更改为CASTNVARCHAR但这会再次导致损坏。

SELECT CAST(CAST('T8O5IGVzdCBsZSBjYWbDqSBsZSBwbHVzIHByb2NoZT8=' as XML ).value('.','varbinary(max)') AS NVARCHAR(250) )

????????????????
Run Code Online (Sandbox Code Playgroud)

我的搜索引擎技能可能让我失望,但我似乎找不到其他有我问题的人。

有什么想法吗?

sql-server collation sql-server-2012 encoding unicode

4
推荐指数
1
解决办法
1万
查看次数