[英]Base64 String Encoding C# vs TSQL
我在C#和TSQL中具有base64字符串編碼/解碼功能,我的問題是C#的編碼結果與TSQL中的編碼結果不同。
我的目標是:
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.