网站不显示Unicode字符

时间:2014-03-04 13:53:04

标签: asp.net-mvc razor unicode

我在使用剃刀显示unicode字符时遇到问题。当它遍历我的模型中的所有项目时,我希望✔出现在任何地方fileID不等于零。到目前为止我试过这个:

@foreach (var item in Model)
    {
        @(item.fileID == "0" ? "" : "✔")
    }

但它似乎只显示✔而不是检查是否有其他方式我应该格式化这个?

3 个答案:

答案 0 :(得分:1)

我通过添加Html.Raw解决了这个问题,使得页面读取三元语句响应为普通HTML而不是字符串。

@foreach (var item in Model)
{
    @( Html.Raw(item.fileID == "0" ? "" : "✔"))
}

答案 1 :(得分:0)

@(item.fileID == "0" ? "" : "✔")

Razor将为您提供HTML转义字符串,因此您应该编写纯文本,而不是HTML转义。只要你有一个可以用适当的编码保存模板的编辑器,这应该没问题:

@(item.fileID == "0" ? "" : "✔")

如果您只使用ASCII,那么您可以使用C#string literal escape:

@(item.fileID == "0" ? "" : "\u2714")

答案 2 :(得分:0)

即使在较旧的版本中,它也可以在Razor中使用:

@(item.fileID == "0" ? "" : "✔")

如果不是,并且输出混乱(也称为Mojibake),则页面编码有问题。

首先要验证的是,浏览器正在通过Content-Type HTTP响应标头或<meta charset=“utf-8”>标签将页面解释为Unicode。 HTTP响应标头会覆盖所有元标记。

要验证的第二件事是,您的剃刀文件(以及所有布局)已使用UTF-8编码保存:

Save with Encoding option in the Save File As dialog

然后,将其另存为Unicode (UTF-8 with signature) - Codepage 65001

从理论上讲,UTF-8 without signature应该也可以正常工作,但是在我的实验中,它需要签名/ BOM,并且大多数Visual Studio文件似乎仍然包含BOM。