Вы еще не сказали, какую ошибку вы получаете, но ваш второй код должен быть просто:
return Encoding.UTF8.GetString(Convert.FromBase64String(data));
- Вам не нужно создавать новый
UTF8Encoding
- Вам не нужно явно беспокоиться о декодерах
Кроме того, ваша обработка исключений является мерзкой - трассировка стека уже показала бы, где произошла ошибка, но просто перехватывая ее и перебрасывая Exception
вы скрываете исходный тип исключения.Просто удалите блоки try / catch из обоих ваших методов.(И переименуйте их так, чтобы они соответствовали соглашениям об именах .NET.)
По сути, ваш код может выглядеть так просто:
public static string Base64AndUtf8Encode(string text)
{
return Convert.ToBase64String(Encoding.UTF8.GetBytes(text));
}
public static string Base64AndUtf8Decode(string base64)
{
return Encoding.UTF8.GetString(Convert.FromBase64String(base64));
}
Очевидно, вы можете разделить его на отдельные операторы, если хотитено он может быть довольно коротким:
public static string Base64AndUtf8Encode(string text)
{
byte[] bytes = Encoding.UTF8.GetBytes(text);
return Convert.ToBase64String(bytes);
}
public static string Base64AndUtf8Decode(string base64)
{
bytes[] bytes = Convert.FromBase64String(base64);
return Encoding.UTF8.GetString(bytes);
}