2

参考这个问题的公认答案:ASP.NET - What Characters does Server.HtmlEncode Encode Encode into Named Character Entities

HtmlEncode这里引用了源代码。我对以下几行有疑问:

  if ((ch >= '\x00a0') && (ch < 'Ā'))
  {
      output.Write("&#");
      output.Write(ch.ToString(NumberFormatInfo.InvariantInfo));
      output.Write(';');
  }

基本上,这会将所有字符从&nbsp;(ASCII 代码 127) 转换为 ÿ (ANSI 代码 255) 到其实体编码表示 (<ansicode>)。

但是,所有 ansi 代码高于 255 的字符都按原样写入输出。

有谁知道这种 ANSI 127 - 255 编码背后的原理?有一个网页看起来有点傻,在 utf-8 中,源代码看起来像

"S&#248k:"

代替

"Søk:"

(“Søk”是挪威语的“搜索”)。

4

1 回答 1

1

ASCII,见http://en.wikipedia.org/wiki/Ascii,只定义了 0 到 127 之间的值;这是 7 位而不是 8 位(一个字节)。它们是 HTML 编码,以避免发送非法 ASCII(最高有效位)字符。

发送UTF-8(这是 Web 的事实上的编码)时,非 ASCII 字符 (0xA0 - 0xFF) 用于指定多字节字符。因此,为了避免冲突,他们使用了命名字符串。

至少,这就是我会做的。

于 2012-08-22T11:36:14.343 回答