如何使用T-SQL解码base64 unicode字符串

时间:2018-05-19 12:34:18

标签: sql-server sql-server-2008 tsql sql-server-2005 base64

无法解码base64字符串中的阿拉伯字符。 当我解码它必须是这样的:'سلامجیران'(使用base64encode网站)。我尝试像这样解码:

SELECT CAST(
          CAST(N'' AS XML).value('xs:base64Binary("2LPZhNin2YUg2KzbjNix2KfZhg==")' , 'VARBINARY(MAX)') 
          AS NVARCHAR(MAX)
           ) UnicodeEncoding ;

根据这个答案:Base64 encoding in SQL Server 2005 T-SQL 但是有这样的反应:'돘蓙Ꟙ藙 ' 有没有办法正确解码阿拉伯字符?

1 个答案:

答案 0 :(得分:2)

要将UTF-8字符串转换为nvarchar,您可以使用CLR函数(例如:https://stackoverflow.com/a/14041069/1187211)或T-SQL函数(例如:https://stackoverflow.com/a/28412587/1187211)。

使用第二个功能,您可以像这样解码数据:

SELECT dbo.DecodeUTF8String(CAST(N'' AS XML).value
('xs:base64Binary("2LPZhNin2YUg2KzbjNix2KfZhg==")','VARBINARY(MAX)'))