2011-03-08 111 views
3

我目前正試圖將其存儲到我的數據庫之前對數據進行編碼。UTF8編碼base64string和存儲數據庫

try 
{ 
    byte[] byteEncString = new byte[_strToConvert.Length]; 
    byteEncString = System.Text.Encoding.UTF8.GetBytes(_strToConvert); 
    string strEncoded = Convert.ToBase64String(byteEncString); 
    return strEncoded; 
} 

有誰知道一個15字符串有多長它通過UTF8和base64string編碼後?另外,是否有最大值?我在SQL服務器上的字段只有50,我想限制在這個範圍內。思考?

回答

5

好,一方面是有創建一個字節數組,然後忽略它是沒有意義的 - 所以你的代碼會更簡單爲:

byte[] byteEncString = Encoding.UTF8.GetBytes(_strToConvert); 
return Convert.ToBase64String(byteEncString); 

一個.NET char可以當UTF-3個字節結束8編碼,以便到達一個45字節的最大。但是,base64將3個字節轉換爲4個字符,因此結果爲60個字符的最大base64編碼字符串。


這是因爲不能在基本多平面中的任何字符被表示爲一個代理對。這對最終將作爲4個字節,但已採取2個輸入字符,因此在這種情況下,平均「每字節char」是僅2.