特殊(或外国)字符

4

我刚接触C#,并尝试使用ASP.Net GridView(框架3.5)进行实验,但发现当gridView文本包含以下内容时会出现大问题:

ñ/Ñ/á/Á/é/É/í/Í/ó/Ó/ú/Ú或aâ、ê、î、ô、û、ë、ï、ü甚至ç

结果显示如下:&+#+237

我通过制作表格、数据集等方式使从数据库获取的数据变得干净,也尝试过编写清理变量的方法,但使用了糟糕的IF语句。

我想知道是否有一种方法可以在从GridView提取数据时使这些字符呈现为它们自己(ñ作为ñ而不是&+#+237),而不必直接从数据库获取数据或编写大量代码。如果没有,是否有一种有效的编码方法来清理它们?

1个回答

5
你的字符正在进行HTML编码,可能是在数据访问层或网格视图控件中进行的。尝试在绑定网格之前通过 HttpUtility.HtmlDecode() 运行文本。
如果这样做不起作用,那么很可能是在控件级别进行编码。我看到你给这个问题打了 "textbox" 标签。标准的ASP.NET TextBox控件将自动对其Text属性分配的任何内容进行编码。相反,你可以使用通用的 System.Web.UI.HtmlControls.HtmlTextArea 控件或 new HtmlGenericControl("input")

谢谢先生,你救了我们的大忙。HttpUtility.HtmlDecode() 很好用。 - Carlos
此外,值得注意的是,HTML编码通常是一件非常好的事情,因为它可以保护免受XSS攻击,尤其是当您的输入源于用户输入时。在这种情况下,最好保留编码。如果您需要检索未编码的文本而不必回到数据库,则可以将其存储在会话或其他非输出存储中,或者使用jQuery的.text()方法从GridView中抓取它。 - Derek Hunziker
@DerekHunziker 我需要这个来解码/删除那些令人烦恼的字符,仅从包含数据库结果的GridView中提取数据。用户输入是另一回事。XD - Carlos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接