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

时间:2014-11-22 23:13:39

标签: c# sql-server string binary-data type-conversion

我在db中存储了字符串作为二进制数据 我将这些数据加载到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[]"

3 个答案:

答案 0 :(得分:2)

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

当您从数据库中读取它时,您可以将其转换为:

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

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

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

答案 1 :(得分:1)

使用Encoding.GetString()

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

答案 2 :(得分:0)

这取决于字符串编码,但假设您使用的是ASCII

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

其中byteArray是来自sqlserver的数据

如果它返回垃圾,请尝试使用UTF8或其他编码