大家好,我是第八哥,一个在.NET领域摸爬滚打了10年的老开发。上周在客户项目里,又遇到了那个熟悉的问题:网页显示正常,但是查看源码时中文全变成了测
这样的神秘代码!今天就分享两种我验证过的解决方案,帮你5分钟内搞定这个编码难题。
示例代码:
public IActionResult Index()
{
ViewBag.Test = " 测试中文乱码;
return View();
}
为什么中文会变成测
呢?
根本原因是ASP.NET Core的HTML编码保护机制在作祟。当系统认为某些字符不安全时,会自动转成实体编码。上周我的电商项目里,用户昵称在源码中全显示成了张三
,团队调试时差点崩溃。

方法一:全局配置编码器(推荐)
在Startup.cs的ConfigureServices方法中加入这行魔法代码:services.AddSingleton(HtmlEncoder.Create(UnicodeRanges.All)); 这句话解除了字符集限制。我的电商项目系统加了这个配置后,200多个页面的中文源码瞬间恢复正常!

方法二:视图层原始输出
在Razor视图里用 @Html.Raw(ViewBag.Test) 强制原始输出,也可以解决查看源码时中文显示实体码的问题。但要切记:不能直接输出用户输入的内容,避免渲染时执行恶意脚本,导致XSS攻击!

两种方案如何选择?
新建项目首选全局配置,一劳永逸;已有项目临时修复用 @Html.Raw 更快捷。紧急情况时我常用组合拳:全局配置+关键视图特殊处理,就像上周帮客户修复的支付页面乱码问题。
遇到编码转换别头疼,这两招足够应对90%场景。如果还有疑问,欢迎评论区交流探讨!
评论