Кодировка UTF8 в base64string и сохранение в базе данных - PullRequest
3 голосов
/ 08 марта 2011

В настоящее время я пытаюсь закодировать данные перед сохранением в моей базе данных.

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, и я хочу ограничить его в этом диапазоне. Мысли? * * 1004

1 Ответ

5 голосов
/ 08 марта 2011

Ну, во-первых, нет смысла создавать байтовый массив, а затем игнорировать его - поэтому ваш код будет проще:

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

.NET char может в конечном итоге иметь 3 байтакогда UTF-8 кодируется 1 , так что получается максимум 45 байт.Тем не менее, base64 преобразует 3 байта в 4 символа, так что в результате получается максимальная закодированная в base64 строка длиной 60 символов.Самолет представлен в виде суррогатной пары.Эта пара будет иметь длину 4 байта, но при этом будет 2 входных символа, поэтому в этом случае среднее число «байтов на char» составляет всего 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...