我需要幫助搞清楚如何從被設置爲VARBINARY(最大值)一SQL服務器表列進來數據轉換爲字符串,以便在顯示它一個標籤。轉換的SQL Server varbinary數據轉換爲字符串C#
這是C#和我使用的是DataReader的。
我可以拉在使用數據:
var BinaryString = reader[1];
我知道,此列保存先前轉換爲二進制文本。
我需要幫助搞清楚如何從被設置爲VARBINARY(最大值)一SQL服務器表列進來數據轉換爲字符串,以便在顯示它一個標籤。轉換的SQL Server varbinary數據轉換爲字符串C#
這是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
你需要知道使用的編碼,創建二進制。然後你可以使用
System.Text.Encoding.UTF8.GetString(reader[1]);
並且改變UTF8以使用任何編碼。
二進制數據必須是編碼文本 - 而且您需要知道使用哪種編碼才能將其準確地轉換回文本。因此,例如,你可以使用:
byte[] binaryData = reader[1];
string text = Encoding.UTF8.GetString(binaryData);
或
byte[] binaryData = reader[1];
string text = Encoding.Unicode.GetString(binaryData);
或各種其他選項...但你需要知道正確的編碼。否則,就像試圖將JPEG文件加載到只能讀取PNG的圖像查看器一樣......但更糟糕的是,因爲如果得到錯誤的編碼,它可能會出現以便爲某些字符串工作。
接下來要解決的問題是爲什麼它首先被存儲爲二進制文件......如果它是文本文件,爲什麼它不是以這種方式存儲的。
byte [] binaryString = reader [1]; 給我一個錯誤**不能隱式地將類型'object'轉換爲'byte []'。存在明確的轉換... ** – PercivalMcGullicuddy 2011-02-10 16:07:28