Я столкнулся с проблемой при преобразовании кодирования / декодирования данных с помощью C#. Я жестко закодировал определенные (закодированные) данные base64 и успешно декодировал строку. Как показано ниже,
string encodedText = "eyJDb25uX0dyb3VwX0lEIjozMywiVXNlckVtYWlsIjoiVGVzdHNlcnZpc2VA\nZ21haWwuY29tIiwiVXNlclBhc3N3b3JkIjoib1ZkTEREWUVfX3FuSnZFSE1W\ncnR5WU5ZZzJSTnNzUnpaWG5KaFJMcCIsIkJhc2VVUkwiOiJodHRwOi8vbG9j\nYWxob3N0OjMwMDAifQ==\n";
byte[] data = Convert.FromBase64String(encodedText);
string decodedString = Encoding.UTF8.GetString(data);
Но при чтении того же значения с консоли не удалось декодировать данные. Например,
string readLine = Console.ReadLine();
Console.WriteLine("Received Data :: " + readLine); // Exactly same data received here
byte[] encodedByte = Convert.FromBase64String(readLine); //Failed here?
string configData = System.Text.Encoding.UTF8.GetString(encodedByte);
Второй код завершился ошибкой с сообщением об ошибке ниже
Unhandled exception. System.FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
at System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength)
at System.Convert.FromBase64String(String s)
Примечание:
Я заметил это и удалил все \ n из данная строка. Теперь все работает нормально. Но я не знаю, как это \ n удалить программно. Я пробовал использовать приведенные ниже коды, но он не работает,
readLine = Regex.Replace(readLine, @"\t|\n|\r", String.Empty);
А также пробовал:
readLine = readLine.Replace("\n", String.Empty);
Было бы очень признательно, если бы кто-нибудь помог в этом.