2

この質問の受け入れられた回答を参照してください: ASP.NET - Server.HtmlEncode が名前付き文字エンティティにエンコードする文字

のソースコードをHtmlEncode引用します。次の行に質問があります。

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

基本的に、これは&nbsp;(ASCII コード 127) から ÿ (ANSI CODE 255) までのすべての文字を、そのエンティティ エンコード表現 (<ansicode>) に変換します。

ただし、255 を超える ansi コードを持つすべての文字は、そのまま出力に書き込まれます。

ANSI 127 - 255 のこのエンコーディングの背後にある理論的根拠を知っている人はいますか? ソースコードが次のように見えるutf-8のWebページを持つのは少しばかげているように見えます

"S&#248k:"

それ以外の

"Søk:"

(「Søk」はノルウェー語で「検索」を意味します)。

4

1 に答える 1

1

ASCII、http://en.wikipedia.org/wiki/Asciiを参照、0から127までの値のみを定義します。これは8ビット(1バイト)ではなく7ビットです。これらは、不正なASCII(最上位ビットオン)文字の送信を回避するためのHTMLエンコーディングです。

UTF-8 (Webの事実上のエンコーディング)を送信する場合、非ASCII文字(0xA0〜0xFF)を使用してマルチバイト文字を指定します。したがって、衝突を避けるために、名前付きの文字列を使用しています。

少なくとも、それは私がすることです。

于 2012-08-22T11:36:14.343 に答える