在浏览器中检查页面时无法打印的字符

时间:2018-12-20 13:01:58

标签: asp.net vb.net

我的问题是关于ASP.NET,VB.NET。

我有一个用ASP.Net构建的网站,编码部分是VB.NET。

现在出了什么问题-在菜单之后,要打印包括文件的内容,并且菜单被放置在主控“ .acsx”文件中。

menu.acsx代码为:

...menus links...
    <div>
    <%Response.WriteFile("~/Files/after_header.inc")%>
    </div>

写在“ after_header.inc”中的文字是:

<p>Hello</p>

现在,当我检查菜单下方和“ Hello”上方的部分时,它显示的是这样的字符:

<div>
&#65279;<p>Hello</p>
</div>

我的问题是:为什么此字符代码在这里?如果我删除包含文件的代码,则没有问题。

有人可以帮我吗?-这个字符是无法打印的字符,破坏了网站的外观-在菜单下方产生了额外的一行。

1 个答案:

答案 0 :(得分:3)

如果将65279转换为十六进制,则会发现它是FEFF,它是UTF-16的byte order mark(BOM)。

像这样将文件写到页面上并不是ASP.NET的实际工作方式。相反,您应该将控件放在此处:

<asp:Literal ID="someSensibleName" runat="server"></asp:Literal>

以及后面的代码中,也许在页面加载事件处理程序中,您将填充该控件:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    someSensibleName.Text = IO.File.ReadAllText(Server.MapPath("~/Files/after_header.inc"))

End Sub

ReadAllText将为您删除BOM(如果存在)。