将存储为二进制数的字符串转换回字符串

问题描述:

我已经将字符串存储为数据库中的二进制数据。
我将这些数据加载到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[]"

nvarchar值被转换为二进制值,其中每个字符使用两个字节。

,当你从数据库中读取它你已经可以把它转换:

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

或者你可以使用UTF-16编码的数据转换成C#:

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

使用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

这取决于串编码但假设您正在使用ASCII

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

哪里通过teArray是你的数据从sqlserver

如果它返回垃圾尝试UTF8或其他编码