2013-12-19 144 views
1

在SQL Server中,從xml類型到varbinary的默認轉換使用UTF-16字符編碼使用XML文本編碼(帶尖括號的起始和結束標記等)。例如。SQL Server:如何將XML變量轉換爲UTF-8編碼的varbinary(max)?

declare @xml xml = '<foo><bar>abc</bar></foo>'; 
declare @foo varbinary(max); 
set @foo = CONVERT(varbinary(max), @xml, 2); 
select @foo 

收率:

0xFFFE3C0066006F006F003E003C006200610072003E006100620063003C002F006200610072003E003C002F0066006F006F003E00

通知的零,指示雙字節字符。有沒有辦法轉換成UTF-8?

+0

http://msdn.microsoft.com/en-us/library/ms180886%28v=sql.110%29.aspx – Anon

回答

1

也許這不是做到這一點的最好辦法,但我解決了這個XML轉換爲varchar第一:

declare @xml xml = '<foo><bar>abc</bar></foo>'; 
declare @xmlvarchar varchar(max) = CONVERT(varchar(max), @xml) 
declare @foo varbinary(max) = CONVERT(varbinary(max), @xmlvarchar); 
select @foo 

輸出是:

0x3C666F6F3E3C6261723E6162633C2F6261723E3C2F666F6F3E 

當然,VARCHAR取決於你數據庫整理,在我的情況(非特殊字符)這個解決方案完美的作品。

相關問題