2014-11-22 89 views
0

我已經將字符串存儲爲數據庫中的二進制數據。
我將這些數據加載到c#中作爲byte []。我如何將它轉換爲原始字符串?將存儲爲二進制數的字符串轉換回字符串

declare @QRCodeLink nvarchar(max) = 'goo.gl/JCKW' 
declare @QRCodeData varbinary(max) = CONVERT(varbinary(max), @QRCodeLink) 
UPDATE dbo.QRCode 
SET QRCodeData = @QRCodeData 
WHERE ID = @ID 

在C#代碼, Convert.ToString(qrCodeData)結果在此"System.Byte[]"

回答

2

nvarchar值被轉換爲二進制值,其中每個字符使用兩個字節。

,當你從數據庫中讀取它你已經可以把它轉換:

select convert(nvarchar(max), QRCodeData) from dbo.QRCode ... 

或者你可以使用UTF-16編碼的數據轉換成C#:

string qrCodeLink = Encoding.Unicode.GetString(qrCodeData); 
0

使用Encoding.GetString()

byte[] byteArr = Encoding.UTF8.GetBytes("hello"); 
    string s = Encoding.UTF8.GetString(byteArr); 
    Console.WriteLine(s); 
+0

我從數據庫中獲取字節[]。 'Encoding.UTF8.GetString'在每個字符之間給出了帶'\ 0'的字符串。 – 2014-11-22 23:21:34

0

這取決於串編碼但假設您正在使用ASCII

string decoded = ASCIIEncoding.ASCII.GetString(byteArray); 

哪裏通過teArray是你的數據從sqlserver

如果它返回垃圾嘗試UTF8或其他編碼

相關問題