[英]Converting SQL Server varBinary data into string C#
我需要幫助找出如何將從設置為varBinary(max)的SQL Server表列中的數據轉換為字符串,以便在標簽中顯示它。
這是在C#中我正在使用DataReader 。
我可以使用以下方式提取數據:
var BinaryString = reader[1];
我知道這個專欄保存以前轉換為二進制的文本。
這實際上取決於最初從字符串轉換為二進制時使用的編碼:
byte[] binaryString = (byte[])reader[1];
// if the original encoding was ASCII
string x = Encoding.ASCII.GetString(binaryString);
// if the original encoding was UTF-8
string y = Encoding.UTF8.GetString(binaryString);
// if the original encoding was UTF-16
string z = Encoding.Unicode.GetString(binaryString);
// etc
二進制數據必須是編碼文本 - 您需要知道使用了哪種編碼才能准確地將其轉換回文本。 例如,您可以使用:
byte[] binaryData = reader[1];
string text = Encoding.UTF8.GetString(binaryData);
要么
byte[] binaryData = reader[1];
string text = Encoding.Unicode.GetString(binaryData);
或其他各種選擇......但你需要知道正確的編碼 。 否則就像嘗試將JPEG文件加載到只讀取PNG的圖像查看器中......但更糟糕的是,因為如果你得到錯誤的編碼,它可能看起來適用於某些字符串。
接下來要解決的是為什么它首先存儲為二進制文件...如果它是文本,為什么不以這種方式存儲它。
您需要知道用於創建二進制文件的編碼。 然后你可以使用
System.Text.Encoding.UTF8.GetString(reader[1]);
並根據所使用的編碼更改UTF8。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.