我在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[]"
答案 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或其他编码