将UTF8编码转换为base64字符串并存储到数据库中

3

我目前正在尝试在将数据存储到数据库之前对其进行编码。

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个字符,我想将其限制在这个范围内。你有什么想法吗?

1个回答

5

首先,创建一个字节数组然后不使用它是没有意义的 - 所以你的代码可以更简单:

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

.NET中的char在UTF-8编码时可能会变成3个字节1,因此最多可达到45个字节。然而,base64将3个字节转换为4个字符,因此结果是60个字符的最大base64编码字符串。


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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接