2011-03-08 102 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.