У меня были некоторые трудности с текстом, который я получал от веб-службы, которую я недавно использовал.Веб-сервис отправляет обратно XML, что нормально, но мы получаем управляющие символы ASCII в середине некоторых XML.Я хотел вставить пример в эту публикацию, но, будучи недопустимым символом, я даже не могу вставить его в эту текстовую область.
Я потратил некоторое время на изучение того, что делать в этих случаях, и нашел эту информативную статью: http://seattlesoftware.wordpress.com/2008/09/11/hexadecimal-value-0-is-an-invalid-character/. Вот цитата из этой статьи, которая имеет отношение к делу:
Это не символы, которые имеют какое-либо отношение к данным XML;это недопустимые символы, которые должны быть удалены ...
Итак, следуя совету статьи, я написал некоторый код для извлечения необработанного вывода из этого сервиса и удаления его из любого символа, который являетсяуправляющий символ (и это не пробел, табуляция, кр или lf)
Вот этот код:
System.Net.WebClient client = new System.Net.WebClient();
byte[] invalidCharacters = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0xB,
0xC, 0xE, 0xF, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16,
0x17, 0x18, 0x1A, 0x1B, 0x1E, 0x1F, 0x7F };
byte[] sanitizedResponse = (from a in client.DownloadData(url)
where !invalidCharacters.Contains(a)
select a).ToArray();
result = System.Text.UTF8Encoding.UTF8.GetString(sanitizedResponse);
Это заставило меня задуматься.Если я получу двухбайтовые символы, я испорчу какие-либо данные, которые я получаю обратно?Допустимо ли для некоторых кодовых страниц двухбайтовые символы, состоящие из одного или двух однобайтовых управляющих символов ASCII?Статья о том, что эти символы не имеют никакого отношения к данным XML, звучит окончательно, но мне нужно второе мнение.
Цените любые отзывы