簡體   English   中英

Base64字符串編碼C#與TSQL

[英]Base64 String Encoding C# vs TSQL

我在C#和TSQL中具有base64字符串編碼/解碼功能,我的問題是C#的編碼結果與TSQL中的編碼結果不同。

我的目標是:

  1. C#編碼的字符串應在TSQL中解碼,反之亦然
  2. 這兩個函數都應該具有對Unicode字符進行編碼/解碼的能力

C#

Convert.ToBase64String(Encoding.UTF8.GetBytes("test"));

Result: dGVzdA==

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=

知道如何匹配結果嗎?

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

要使C#代碼使用UTF-16,可以執行以下操作:

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

Result: dABlAHMAdAA=

得到您想要的結果在TSQL下使用

SELECT CAST('test' as varbinary(max)) FOR XML PATH(''), BINARY BASE64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM