【.NET Core】返回脚本及中文乱码问题

原文:.net core 中文乱码问题

在过滤器中需要返回代码在前端执行,比如提示没有权限,或token失效时跳转至重新登录。但是直接返回的代码会被当成文字处理,而且 .net core返回中文是乱码。

当成文字问题可以声明返回内容为html代码
乱码问题是因为程序没有指定编码默认使用Unicode,而中文环境浏览器默认使用gbk。可以通过设置ContentType来告诉浏览器使用utf8.

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
        ContentResult Content = new ContentResult();
        Content.Content = "<script type='text/javascript'>alert('您没有权限进行此项操作.');</script>";
        Content.ContentType = "text/html;charset=utf-8";
        filterContext.Result = Content;
        return;
}

控制台乱码的原因是因为中文windows命令行默认编码页是gb2312,想输出中文只要把控制台的编码页修改成Unicode就可以了。
在cmd里输入chcp 65001再运行程序或者在程序里加一行
Console.OutputEncoding = Encoding.Unicode;
只是显示中文的话没有特殊需求的情况下并不需要引用System.Text.Encoding.CodePages

猜你喜欢

转载自www.cnblogs.com/NBDWDYS2214143926/p/12597459.html