C# . UTF-8可以

C# . UTF-8可以,c#,.net,html,encoding,html-entities,C#,.net,Html,Encoding,Html Entities,为什么这两个变体会产生不同的HTML?Write不会对其输出进行编码,因此您可以像“x”那样输出HTML。ListItems对其文本进行编码,因为您无论如何都无法在其中输出HTML。传递未编码的文本是没有意义的。在HTML上!嗯……HtmlDecode的功能应该是相同的:为什么两个不同的解码?这是我的问题!删除它并不是解决方案(还因为它会进行另一种编码,结果将是在选择下拉选项中出现W&;auml;hlen Sie bite…)我很确定您只是在这里做出了一个错误的假设。尝试将HtmlCode

为什么这两个变体会产生不同的HTML?Write不会对其输出进行编码,因此您可以像
“x”
那样输出HTML。ListItems对其文本进行编码,因为您无论如何都无法在其中输出HTML。传递未编码的文本是没有意义的。

在HTML上!嗯……HtmlDecode的功能应该是相同的:为什么两个不同的解码?这是我的问题!删除它并不是解决方案(还因为它会进行另一种编码,结果将是在选择下拉选项中出现W&;auml;hlen Sie bite…)我很确定您只是在这里做出了一个错误的假设。尝试将HtmlCode的结果赋给一个变量,并将其传递给Response.Write和ListItem ctor,您可能会看到相同的结果,在这种情况下,罪魁祸首在别处。为了证明我的观点,我创建了一个示例应用程序,并将您的代码粘贴到页面的Page_Init函数中:如您所见,下拉列表和响应的结果都是一样的。Write。绝对不是!检查我的更新答案和你的建议:结果是一样的:OIt在浏览器页面上是一样的!但是试着看看HTML源代码…在HTML上!嗯……HtmlDecode的功能应该是相同的:为什么两个不同的解码?这是我的问题!删除它并不是解决方案(还因为它会进行另一种编码,结果将是在选择下拉选项中出现W&;auml;hlen Sie bite…)我很确定您只是在这里做出了一个错误的假设。尝试将HtmlCode的结果赋给一个变量,并将其传递给Response.Write和ListItem ctor,您可能会看到相同的结果,在这种情况下,罪魁祸首在别处。为了证明我的观点,我创建了一个示例应用程序,并将您的代码粘贴到页面的Page_Init函数中:如您所见,下拉列表和响应的结果都是一样的。Write。绝对不是!检查我的更新答案和你的建议:结果是一样的:OIt在浏览器页面上是一样的!但是试着看一下HTML源代码……是的,答案不错,但对我来说,HTML实体的编码毫无意义。我的意思是:如果它看到
ä
isä(因此它可以识别htmlentities)为什么要将其放在7位ascii字符中?那么,如何自定义编码数据呢?我的意思是,如果它找到html实体,就保留html实体。我不认为我可以在.NET上选择这个选项…因为“数据丢失一致性”我的意思是,如果我在数据库中有html实体的字符串,.NET将其转换为7位ASCII字符集,然后在数据库中还原/更新这些值,它们将以不同的方式“编码”,而不是“原始存储”。希望你明白我的意思?:)+1@AndrewBarber。正确的做法是将原始文本存储在数据库中,然后在输出时对其进行编码。HtmlDecode接受它并生成纯文本、未编码文本。您将那个普通的、未编码的文本传递给服务器端控件,出于安全原因,服务器端控件对其进行编码以供显示。它只是碰巧以一种不同但同样有效的方式对其进行编码(使用字符实体引用而不是“常规”实体)。是的,回答不错,但对我来说,对html实体进行编码毫无意义。我的意思是:如果它看到
ä
isä(因此它可以识别htmlentities)为什么要将其放在7位ascii字符中?那么,如何自定义编码数据呢?我的意思是,如果它找到html实体,就保留html实体。我不认为我可以在.NET上选择这个选项…因为“数据丢失一致性”我的意思是,如果我在数据库中有html实体的字符串,.NET将其转换为7位ASCII字符集,然后在数据库中还原/更新这些值,它们将以不同的方式“编码”,而不是“原始存储”。希望你明白我的意思?:)+1@AndrewBarber。正确的做法是将原始文本存储在数据库中,然后在输出时对其进行编码。HtmlDecode接受它并生成纯文本、未编码文本。您将那个普通的、未编码的文本传递给服务器端控件,出于安全原因,服务器端控件对其进行编码以供显示。它只是碰巧以一种不同但同样有效的方式对其进行编码(使用字符实体引用而不是“常规”实体)。
string myText = "Wählen Sie bitte";
string myTextDecoded = HttpUtility.HtmlDecode(myText);
Response.Write(myTextDecoded);
ddAdulti.Items.Add(new ListItem(myTextDecoded, ""));
Wählen Sie bitte
Wählen Sie bitte
ddAdulti.Items.Add(new ListItem("</select>", ""));
ddAdulti.Items.Add(new ListItem("An actual valid value", ""));
<select>
    <option></select></option>
    <option>An actual valid value</option>
</select>
<select>
    <option>&lt;/select&gt;</option>
    <option>An actual valid value</option>
</select>
W&#228;hlen
Wählen