为什么特殊字符撇号和其他人在HTMl文件中显示如下所示

时间:2015-06-09 18:07:41

标签: asp.net-mvc html5 razor markdown jekyll

我有一个UTF-8的降价文件,没有BOM编码格式[来自word文档的md文件生成工具]。使用jekyll工具将此降价转换为HTML。 md文件内容中提供以下特殊字符(撇号,大写等)。

1. MD中的示例内容:

dont't, **ListView** control

转换HTMl格式如下:

<!DOCTYPE html>
    <html>
      <head>
      <meta charset="utf-8">      
    </head>
      <body> 
      <p>dont’t, <strong>ListView</strong> control</p>
        </body>
    </html>

打开html文件时,我们可以获得准确的结果dont’t, ListView control。我想通过Html.Action使用加载到ASP.NET MVC razor视图中的相同html文件。语法如下:

MVC Razor视图通过操作方法访问html文件:

Html.Action("GetHtmlPage", "Products", new {path = "~/Views/Products/WhatsNew/" + Model.Platform + ".html"}))

行动代码:

public ActionResult GetHtmlPage(string path)
        {
            return new FilePathResult(path, "text/html");
        }

使用上面的MVC语法,我可以成功地将HTMl文件加载到我的View中。但输出显示如下,如浏览器和HTMl模板,如以前的格式。

dont’t, ListView control
  1. Apostrope被视为'’
  2. 在粗体元素后添加字符串。
  3. 如何在浏览器中查看特殊字符,将html文件加载到razor视图中。我一直坚持到今天。

1 个答案:

答案 0 :(得分:0)

您的HTML文档似乎将自己宣传为UTF-8。但是,如果它实际上不是UTF-8格式,或者如果Markdown文件不是UTF-8,则可能导致字符实际上不是UTF-8编码字符。因此,请检查文件的编码。

如果这不能解决问题,那么您需要使用HTML Entities。或者,您只需将ASCII文字用于标点符号。

例如,查看示例HTML中的撇号,注意它是倾斜一个角度(单个右引号,unicode字符U + 2019)而不是strait撇号(unicode字符U + 0027 - 这是也是一个ASCII字符)。

请注意,要在HTML文档中可靠地显示这些字符,最好对这些字符使用HTML实体。因此,降价文件应该是这样的:

Don&rsquo;t, **ListView** control

HTML实体&rsquo;告诉浏览器显示单个右引号,unicode字符U + 2019。

请注意,Markdown会为您的HTML实体执行not convert个此类字符。你必须自己做。您可以使用SmartyPants进行转换,但它会将ASCII字符转换为更丰富的字符作为HTML实体。在这种情况下,您的Markdown应如下所示:

Don't, **ListView** control

当然,如果需要,您可以使用ASCII字符,而不必使用SmartPants。

但是,请注意,如果您使用的是MS Word,则默认情况下会配置该程序以自动替换您键入的ASCII字符(使用键盘上的撇号键)。由于这个原因,通常建议不要使用文字处理器(如MS Word)编辑Markdown文档。请改用plain text editor

如果你真的必须使用MS Word,有几种方法可以禁用自动替换行为。有关字处理器如何处理这些类型的字符以及如何禁用该行为的详细信息,请参阅this