2011-02-10 128 views
14

我需要幫助搞清楚如何從被設置爲VARBINARY(最大值)一SQL服務器表列進來數據轉換爲字符串,以便在顯示它一個標籤。轉換的SQL Server varbinary數據轉換爲字符串C#

這是C#和我使用的是DataReader的

我可以拉在使用數據:

var BinaryString = reader[1]; 

我知道,此列保存先前轉換爲二進制文本。

回答

30

這真的取決於它當您最初從字符串轉換爲二進制文件使用的編碼:

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 
+1

byte [] binaryString = reader [1]; 給我一個錯誤**不能隱式地將類型'object'轉換爲'byte []'。存在明確的轉換... ** – PercivalMcGullicuddy 2011-02-10 16:07:28

2

你需要知道使用的編碼,創建二進制。然後你可以使用

System.Text.Encoding.UTF8.GetString(reader[1]); 

並且改變UTF8以使用任何編碼。

7

二進制數據必須是編碼文本 - 而且您需要知道使用哪種編碼才能將其準確地轉換回文本。因此,例如,你可以使用:

byte[] binaryData = reader[1]; 
string text = Encoding.UTF8.GetString(binaryData); 

byte[] binaryData = reader[1]; 
string text = Encoding.Unicode.GetString(binaryData); 

或各種其他選項...但你需要知道正確的編碼。否則,就像試圖將JPEG文件加載到只能讀取PNG的圖像查看器一樣......但更糟糕的是,因爲如果得到錯誤的編碼,它可能會出現以便爲某些字符串工作。

接下來要解決的問題是爲什麼它首先被存儲爲二進制文件......如果它是文本文件,爲什麼它不是以這種方式存儲的。

相關問題