HttpUtility. HtmlEncode не кодирует все

Для полноты вы можете добиться этого с помощью numpy, используя:

f = 1.00
int32bits = np.asarray(f, dtype=np.float32).view(np.int32).item()  # item() optional

Затем вы можете распечатать это с помощью дополнения, используя спецификатор формата b

print('{:032b}'.format(int32bits))
17
задан strager 13 February 2009 в 21:11
поделиться

4 ответа

Это кажется ужасно неэффективным, но единственный способ, которым я могу думать, чтобы сделать, который должен просмотреть каждый символ:

public static string MyHtmlEncode(string value)
{
   // call the normal HtmlEncode first
   char[] chars = HttpUtility.HtmlEncode(value).ToCharArray();
   StringBuilder encodedValue = new StringBuilder();
   foreach(char c in chars)
   {
      if ((int)c > 127) // above normal ASCII
         encodedValue.Append("&#" + (int)c + ";");
      else
         encodedValue.Append(c);
   }
   return encodedValue.ToString();
}
12
ответ дан 30 November 2019 в 11:13
поделиться

Тип возвращаемого значения HtmlEncode является строкой, которая имеет Unicode и следовательно не имеет потребности закодировать эти символы.

, Если кодирование Вашего потока вывода не совместимо с этими символами затем, используют HtmlEncode как this:-

 HttpUtility.HtmlEncode(outgoingString, Response.Output);

HtmlEncode с затем Escape символы соответственно.

13
ответ дан 30 November 2019 в 11:13
поделиться

Rich Strahl просто отправил сообщение в блоге, HTML и Строковое Кодирование Uri без Системы. Сеть , где у него есть некоторый пользовательский код, который кодирует верхний диапазон символов, также.

/// <summary>
/// HTML-encodes a string and returns the encoded string.
/// </summary>
/// <param name="text">The text string to encode. </param>
/// <returns>The HTML-encoded text.</returns>
public static string HtmlEncode(string text)
{
    if (text == null)
        return null;

    StringBuilder sb = new StringBuilder(text.Length);

    int len = text.Length;
    for (int i = 0; i < len; i++)
    {
        switch (text[i])
        {

            case '<':
                sb.Append("&lt;");
                break;
            case '>':
                sb.Append("&gt;");
                break;
            case '"':
                sb.Append("&quot;");
                break;
            case '&':
                sb.Append("&amp;");
                break;
            default:
                if (text[i] > 159)
                {
                    // decimal numeric entity
                    sb.Append("&#");
                    sb.Append(((int)text[i]).ToString(CultureInfo.InvariantCulture));
                    sb.Append(";");
                }
                else
                    sb.Append(text[i]);
                break;
        }
    }
    return sb.ToString();
}
12
ответ дан 30 November 2019 в 11:13
поделиться

Похоже, что HtmlEncode предназначен только для кодирования строк, которые помещаются в HTML-документы, где только / < > & и т.д. вызывают проблемы. Для URL просто замените HtmlEncode на UrlEncode.

2
ответ дан 30 November 2019 в 11:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: