Base64 字符串编码 C# 与 TSQL

Mic*_*dze 2 c# t-sql base64

我在 C# 和 TSQL 中有 base64 字符串编码/解码函数,我的问题是来自 C# 的编码结果与 TSQL 中的编码结果不同。

我的目标是:

  1. C# 编码的字符串应该在 TSQL 中解码,反之亦然
  2. 这两个函数都应该能够编码/解码 unicode 字符

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)

知道如何匹配结果吗?

And*_*ton 5

SQL Server 使用 UTF-16。您的 C# 代码使用的是 UTF-8,因此有所不同。

要让 C# 代码使用 UTF-16,您可以执行以下操作:

Convert.ToBase64String(Encoding.Unicode.GetBytes("test"))

Result: dABlAHMAdAA=
Run Code Online (Sandbox Code Playgroud)