我正在一个ASP.NET MVC多语言网站上工作。
例如,当我放置é
来实现此é
时,它将更改为é
。
似乎它首先将&
转换为&
。
出什么问题了?
答案 0 :(得分:1)
好的,我想我可能会明白您的意思。在文档头中的meta标签中,é
更改为é
,但是正文中的实体正确。
您可能已经从富文本环境(即rtf或.doc文件)中复制并粘贴了é,它可能包含编码的&符号,而不是纯文本&符号。经验法则-永远不会从诸如单词之类的文本中复制文本,因为它会跨各种不可见的字符进行复制。在为网站准备副本时,请始终以纯文本(.txt)文件格式进行操作,并且您会知道文本是干净的。如果客户端给您提供.doc文件,请先将其转换为.txt,然后再将它们复制到html中,您会看到任何问题。
但是,在文档的开头,当属性值中包含文本时,引号之间是什么,例如在描述meta标签的content属性中,就像这样:
<meta name="description" content="Enregistreur vocal est une application polyvalente avec un son de haute qualité." />
您不需要使用实体,因为该字符串是纯文本而不是html-因此将其更改为常规é即可使用。
注意:以上内容假设meta标记中的字符串不是来自数据库,而是实际上位于html页面中。如果字符串来自数据库,然后放入meta标记中,则您可能已经在asp中使用了诸如HttpContext.Current.Server.HtmlEncode()之类的东西将其首先放置在数据库中-这是问题的根源。如果是这种情况,在将其放入meta标记之前,需要使用HttpContext.Current.Server.Htmldecode()将其转换回纯文本。