Ошибка при декодировании. Входные данные не являются допустимой строкой base-64, так как они содержат неосновные 64 символа, а более двух символов заполнения
Я получаю ответ от api в формате json, который закодирован, я сохранил ответ json в таблице.Я хочу расшифровать ответ и десерилизовать его. Когда я пытаюсь расшифровать данные, получаю ошибку.
Ошибка: входные данные не являются допустимой строкой Base-64, так как они содержат неосновные 64 символа, более двух символов заполнения или недопустимый символ среди символов заполнения.
Фактический ответ в json :
data={"Id": "234", "Name": "pinky", "MobileNumber": "", "ClassName": "Class1_Physics", "DOBTime": "1990-04-11 15:46:38", "Landline": "", "Status": "Unmarried"}
После Кодирования :
data%3D%7B%22Id%22%3A%20%22234%22%2C%20%22Name%22%3A%20%22pinky%22%2C%20%22MobileNumber%22%3A%20%22%22%2C%20%22ClassName%22%3A%20%22Class1_Physics%22%2C%20%20%20%22DOBTime%22%3A%20%221990-04-11%2015%3A46%3A38%22%2C%20%22Landline%22%3A%20%22%22%2C%20%22Status%22%3A%20%22Unmarried%22%7D%0A
Я воспользовался помощью одного из инструментов для декодирования . Код: / / выборка ответа, который был сохранен в базе данных и присвоение строке с именем 'Name'
string base64Decoded, base64Decoded2; base64Decoded = Name.Trim(); base64Decoded = base64Decoded.Replace('-', '+'); base64Decoded = base64Decoded.Replace('_', '/'); base64Decoded = base64Decoded.Replace('=', '/'); base64Decoded = base64Decoded.Replace(':', '/'); byte[] data2 = System.Convert.FromBase64String(base64Decoded); base64Decoded2 = System.Text.ASCIIEncoding.ASCII.GetString(data2);
Getting error at this line : byte[] data2 = System.Convert.FromBase64String(base64Decoded);
Что я уже пробовал:
string base64Decoded, base64Decoded2; base64Decoded = Name.Trim(); base64Decoded = base64Decoded.Replace('-', '+'); base64Decoded = base64Decoded.Replace('_', '/'); base64Decoded = base64Decoded.Replace('=', '/'); base64Decoded = base64Decoded.Replace(':', '/'); byte[] data2 = System.Convert.FromBase64String(base64Decoded); base64Decoded2 = System.Text.ASCIIEncoding.ASCII.GetString(data2);
Peter_in_2780
Строка, которую вы показываете как "после кодирования", закодирована *не* base64. Он просто имеет все не буквенно-цифровые %-шестнадцатеричные кодировки, вроде как URLencoded, но даже не это.
Member 11589429
Да, я решил эту проблему с помощью HttpUtility.UrlDecode (base64Decoded)