UTF8编码为base64string并存储到数据库

时间:2011-03-08 15:50:08

标签: c# sql-server utf-8 encode

我目前正在尝试对数据进行编码,然后再将数据存储到我的数据库中。

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

有没有人知道在通过utf8和base64string编码后15个字符的字符串有多长?还有,最大值?我在sql server上的字段只有50,我想在这个范围内限制它。想法?

1 个答案:

答案 0 :(得分:5)

嗯,首先,创建一个字节数组然后忽略它是没有意义的 - 所以你的代码会更简单:

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

当UTF-8编码 1 时,.NET char最终可以为3个字节,因此最多可达45个字节。但是,base64将3个字节转换为4个字符,因此最多可以得到60个字符的最大base64编码字符串。


1 这是因为不在基本多语言平面中的任何字符都表示为代理项对。该对最终将为4个字节,但已经占用了2个输入字符,因此在这种情况下,平均“每char个字节数”只有2个。