NancyFx:将默认字符集设置为utf8

时间:2014-05-11 07:18:40

标签: c# nancy

我的cshtml文件中包含以下代码:

Expires on: @Model.EndDate.ToString("MMM dd yyyy")

我在回复中得到了这个:

HTTP/1.1 200 OK
Content-Type: text/html

...
Expires on: ׳�׳�׳™ 05 2013

如何告诉Nancy默认使用UTF8作为回复?


编辑:为了澄清,这不是本地化问题,输出已经本地化 - 只是本地化的UTF8字符串被发送到客户端而没有UTF8字符集声明,所以它得到了为了把它当作latin1而捣乱。

我正在寻找的是:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8

...

我不想单独为每个回复指定它。

我正在使用 NancyFx 网络框架

1 个答案:

答案 0 :(得分:8)

如果要在模块的响应中指定UTF8字符集声明,可以定义After interceptor。以下是如何在模块的构造函数中定义After Interceptor的方法:

After += ctx =>
{
    ...
}

您还可以在引导程序中定义应用程序级别的挂钩:

pipelines.AfterRequest += (ctx) => { ... };

更新:   根据评论,最好的方法是在钩子中使用以下代码:

if (ctx.Response.ContentType == "text/html")
    ctx.Response.ContentType = "text/html; charset=utf-8";