我有一个没有 BOM 编码格式的 UTF-8 markdown 文件[md file generated tool from word document]。使用 jekyll 工具将此 markdown 转换为 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 文件时得到准确的结果 不要,ListView 控件
。我想使用通过 Html.Action 加载到 ASP.NET MVC razor View 中的相同 html 文件。语法如下
MVC Razor View 通过操作方法访问 html 文件:
Html.Action("GetHtmlPage", "Products", new {path = "~/Views/Products/WhatsNew/" + Model.Platform + ".html"}))
Action 代码:
public ActionResult GetHtmlPage(string path)
{
return new FilePathResult(path, "text/html");
}
使用上面的 MVC 语法,我可以成功地将 HTMl 文件加载到我的 View 中。但是输出如下所示,就像在浏览器中一样,HTMl 模板就像以前的格式一样。
dont’t, ListView control
- 撇号被视为
'
,’
- 在粗体元素后添加字符串。
当将 html 文件加载到 razor View 时,如何在浏览器中查看特殊字符。?我坚持到今天。
最佳答案
您的 HTML 文档似乎将自己宣传为 UTF-8。但是,如果它实际上不是 UTF-8 格式,或者如果 Markdown 文件不是 UTF-8 格式,则可能导致字符实际上不是 UTF-8 编码字符。因此,请检查文件的编码。
如果这不能解决问题,那么您需要使用 HTML Entities .或者你需要使用 ASCII仅用于标点符号的文本。
例如,查看示例 HTML 中的撇号,请注意它倾斜了一个角度(单右引号,unicode 字符 U+2019),而不是海峡撇号(unicode 字符 U+0027 - 这是也是一个 ASCII 字符)。
请注意,要使这些字符在 HTML 文档中可靠地显示,最好为这些字符使用 HTML 实体。因此,markdown 文档应该是这样的:
Don’t, **ListView** control
HTML 实体 ’
告诉浏览器显示单右引号,unicode 字符 U+2019。
请注意,Markdown 会执行 not convert为您将此类字符转换为 HTML 实体。你必须自己做。你可以使用 SmartyPants进行转换,但它将 ASCII 字符转换为更丰富的字符作为 HTML 实体。在这种情况下,您的 Markdown 应该如下所示:
Don't, **ListView** control
当然,如果您愿意,您可以只使用 ASCII 字符而不必费心使用 SmartPants。
但是,请注意,如果您使用的是 MS Word,则该程序默认配置为自动将您键入的 ASCII 字符(使用键盘上的撇号键)替换为特殊字符。由于这个原因,通常建议不要使用文字处理器(如 MS Word)来编辑 Markdown 文档。使用 plain text editor反而。
如果您真的必须使用 MS Word,有几种方法可以禁用自动替换行为。参见 this有关文字处理器如何处理这些类型的字符以及如何禁用该行为的更多信息。
关于asp.net-mvc - 为什么特殊字符撇号和其他字符在 HTMl 文件中显示为这样“,”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30739625/