【问题标题】:Encoding difficulties: £ displaying instead of £编码困难:£显示而不是 £
【发布时间】:2013-04-19 08:23:28
【问题描述】:

我正在从 SQL Server 数据库访问基于 ASP.Net C# 的网站的数据。此数据来自关联公司,包含 £ 符号。但是当我在标签内显示此数据时,它显示的不是£,而是£

注意:& 被转换为&

我知道这是字符编码问题,我已尝试在标题中提供字符编码为“utf-8”和“ISO-8859-1”。

我应该使用哪种字符编码来解决问题?

【问题讨论】:

    标签: asp.net html character-encoding


    【解决方案1】:

    找到正确的字符编码以将字节转换为文本不是问题,而是文本的编码方式(或者更确切地说是转义)。

    问题是文本已经被 HTML 编码了两次。第一次把£变成£,第二次变成£

    因此,要更正此问题,您必须使用HtmlDecode 方法来反转第二步。

    【讨论】:

    • 但是,显示数据的标签在网格视图的项目模板中: 那么我怎样才能把 HtmlDecode 函数放在那里呢?很抱歉问新手问题我只是一个初学者。
    • 如果要在显示之前更改值,则无法绑定属性,请改用EvalText='<%# HttpUtility.HtmlDecode(Eval("Gift")) %>'
    • 这给出了 HtmlDecode 参数无效的错误,所以尝试了这个: Text='' 它有效就像一个魅力,但都感谢你为我提供了正确的方向。非常感谢您的帮助:)
    【解决方案2】:

    &#163 应该呈现为 £。通过使用 &您已经转义了 HTML 转义码。

    【讨论】:

    • 可能是的,就是这样,但是我有解决问题的方法吗? :\ 表里的数据我肯定改不了,只能在应用端找解决办法。
    • 听起来它已经被 HTML 编码了两次。因此,也许您可​​以对其进行两次 HTML 解码? (HttpUtility.HtmlDecode)
    • 但是标签在gridview的itemtemplate中,这里是: 那么我该如何应用 htmldecode 呢? ://
    • 方法很多。请记住,位于 标记之间的只是 C#。所以,你可以有: Text=''
    【解决方案3】:

    它似乎被编码了两次,只解码了一次。它经历了什么步骤?

    【讨论】:

      猜你喜欢
      • 2016-12-24
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      相关资源
      最近更新 更多