我在 C# 和 TSQL 中有 base64 字符串编码/解码函数,我的问题是来自 C# 的编码结果与 TSQL 中的编码结果不同。
我的目标是:
C#
Convert.ToBase64String(Encoding.UTF8.GetBytes("test"));
Result: dGVzdA==
Run Code Online (Sandbox Code Playgroud)
TSQL
SELECT CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:column("bin")))', 'NVARCHAR(MAX)') Base64Encoding
FROM
(
SELECT CAST(N'test' AS VARBINARY(MAX)) AS bin
) AS bin_sql_server_temp
Result: dABlAHMAdAA=
Run Code Online (Sandbox Code Playgroud)
知道如何匹配结果吗?
SQL Server 使用 UTF-16。您的 C# 代码使用的是 UTF-8,因此有所不同。
要让 C# 代码使用 UTF-16,您可以执行以下操作:
Convert.ToBase64String(Encoding.Unicode.GetBytes("test"))
Result: dABlAHMAdAA=
Run Code Online (Sandbox Code Playgroud)