我的问题是关于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>
<p>Hello</p>
</div>
我的问题是:为什么此字符代码在这里?如果我删除包含文件的代码,则没有问题。
有人可以帮我吗?-这个字符是无法打印的字符,破坏了网站的外观-在菜单下方产生了额外的一行。
答案 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(如果存在)。