将存储为二进制数的字符串转换回字符串
问题描述:
我已经将字符串存储为数据库中的二进制数据。
我将这些数据加载到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);
答
这取决于串编码但假设您正在使用ASCII
string decoded = ASCIIEncoding.ASCII.GetString(byteArray);
哪里通过teArray是你的数据从sqlserver
如果它返回垃圾尝试UTF8或其他编码
我从数据库中获取字节[]。 'Encoding.UTF8.GetString'在每个字符之间给出了带'\ 0'的字符串。 – 2014-11-22 23:21:34