参考此问题的接受答案:ASP.NET - What Characters does Server.HtmlEncode Encode into Named Character Entities
此处引用了HtmlEncode
的源代码。我对以下几行有疑问:
if ((ch >= '\x00a0') && (ch < 'Ā'))
{
output.Write("&#");
output.Write(ch.ToString(NumberFormatInfo.InvariantInfo));
output.Write(';');
}
基本上,这会将所有字符从
(ASCII码127)转换为ÿ(ANSI CODE 255)到其实体编码表示(&amp;#&lt; ansicode&gt;)。
但是,ansi代码大于255的所有字符都只是按原样写入输出。
有谁知道这种ANSI 127 - 255编码背后的基本原理?在utf-8中有一个网页看起来有点傻了,源代码看起来像
"Søk:"
而不是
"Søk:"
(“Søk”是挪威语中的“搜索”)。
答案 0 :(得分:1)
ASCII,参见http://en.wikipedia.org/wiki/Ascii,仅定义0到127之间的值;这是7位而不是8位(一个字节)。它们是HTML编码,以避免发送非法ASCII(最重要的位)字符。
发送UTF-8(这是网络的事实编码)时,非ASCII字符(0xA0 - 0xFF)用于指定多字节字符。因此,为避免冲突,他们使用的是命名字符串。
至少,这就是我要做的。