4

ServiceStack (v3.9.44.0) を Windows サービス (.Net4.5 をターゲット) として使用しており、Razor を使用しServiceStack が HTML を生成および提供できるようにしています。

うまく機能しますが、奇妙な問題があります。ビュー内のハードコードされた Unicode 文字列.cshtmlが正しくレンダリングされていないようです。
これが私が意味することです:

ビューのアクセントが正しくレンダリングされない

プロジェクト ビューの構造は標準的です。

プロジェクト構造を表示

であること_Layout.cshtmlで:

<!doctype html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head>
    <body>
        <p>Accents in \Views\_Layout.cshtml: à é ë ô</p>

        @RenderBody()
    </body>
</html>

Articles.cshtml:

@inherits ViewPage<List<PrepaService.Article>>

<p>Accents in \Views\Articles.cshtml: à é ë ô</p>

Table with code-injected list of items:
<table>
    @foreach(var a in Model) {
        <tr>
            <td>@a.Description</td>
        </tr>
    }
</table>

どちらのファイルも、BOM なしの UTF8 ファイルとして適切に保存されます。

以下も追加しようとしましたが、何も変わりません:

SetConfig(new EndpointHostConfig {
    AppendUtf8CharsetOnContentTypes = new HashSet<string> { ContentType.Html }
});

要約すると、次のようになります。

  • すべてのファイルに BOM なしの UTF8 エンコーディングを使用し、明示的なcharset=utf-8コンテンツ タイプの定義を使用しています。

  • これは、 でレンダリングされたもの_Layout.cshtml、およびビュー テンプレート内のコードによって挿入されたものすべてに対して機能します。

  • ただし、ビュー テンプレートでハードコードされた文字列では機能しません

参考文献:

4

1 に答える 1