пятница, 2 сентября 2011 г.

Энкодинг и декодинг строки

В процессе работы часто приходится кодировать/декодировать строки. Обычно это предполагается делать в рамках Веб-приложения, потому использование конструкции
HttpContext.Current.Server.HtmlEncode(source); * This source code was highlighted with Source Code Highlighter.
выглядит оправданным. Но за рамками Веб приложения этот код порождает NullReferenceException. Потому я бы советовал использовать
HttpUtility.HtmlEncode(source); * This source code was highlighted with Source Code Highlighter.
Так как это будет работать везде. Как бонус - расширяющие методы для энкодинга
  1. public static string ToHtmlEncoded(this String source)
  2. {
  3.   var result = HttpUtility.HtmlEncode(source);
  4.   if (result != null) result = result.Replace("'", "'");
  5.   return result;
  6. }
  7. public static string ToHtmlDecoded(this String source)
  8. {
  9.   var result = source.Replace("'", "'");
  10.   result = HttpUtility.HtmlDecode(result);
  11.   return result;
  12. }
* This source code was highlighted with Source Code Highlighter.

2 комментария:

  1. Здравствуйте. В меня вопрос по методу ToHtmlDecoded.
    В строке 9 создаётся новая строковая переменная result, в которую записывается копия source, в которой символы &apos заменены на '.
    В строке 10 переменной result присваивается результат работы метода HtmlDecode, который принимает на вход source.
    Вопрос: к чему строка №9, если её результат никогда не будет задействован, так как значение переменной result гарантированно будет перезаписано в строке 10?

    ОтветитьУдалить
    Ответы
    1. Действительно, это ошибка. Спасибо за уточнение. Поправил.

      Удалить