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

gdu*_*ubs 3 c# sql-server encode utf-8

我目前正在尝试编码数据,然后将其存储到我的数据库中.

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

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

Jon*_*eet 5

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

byte[] byteEncString = Encoding.UTF8.GetBytes(_strToConvert);
return Convert.ToBase64String(byteEncString);
Run Code Online (Sandbox Code Playgroud)

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


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