ASP.NET MVC 5项目UTF-8无BOM编码导致特殊字符显示异常求助
解决ASP.NET MVC 5中UTF-8无BOM文件的特殊字符乱码问题
这个问题我之前也碰到过,VS2017默认用UTF-8无BOM确实更规范,但如果服务器和页面没明确声明编码,浏览器就容易猜错编码,导致é变成é这种乱码。给你几个靠谱的解决办法:
在页面/布局页明确声明UTF-8编码
把<meta charset="UTF-8">放在视图<head>标签的最顶部,确保浏览器加载时第一时间读到编码信息。如果用了布局页(_Layout.cshtml),直接加在布局页的<head>里就行,所有子页面都会自动继承:<head> <meta charset="UTF-8"> <title>@ViewBag.Title - My ASP.NET Application</title> <!-- 其他样式和脚本引用 --> </head>在Web.config中强制全局编码
打开项目根目录的Web.config,找到<system.web>节点,添加或修改globalization配置,强制请求、响应和文件都用UTF-8:<system.web> <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" /> <!-- 其他原有配置,比如compilation、authentication等 --> </system.web>这个设置会让服务器在响应头里自动加上
Content-Type: text/html; charset=utf-8,彻底解决浏览器编码识别的问题。VS文件编码的可选调整(不推荐依赖)
如果个别文件还是有问题,你可以右键文件 -> 高级保存选项,选择“UTF-8带签名(UTF-8带BOM)”,但其实前两个方法已经能从根源解决问题,更推荐用前两种,毕竟无BOM的UTF-8是更标准的格式。
为什么VS2013带BOM时没问题?因为带BOM的文件会让浏览器直接识别出是UTF-8编码,而无BOM时如果没有明确的编码声明,浏览器可能会默认用ISO-8859-1之类的编码解析,就会出现乱码。核心就是让服务器和页面都明确告诉浏览器用UTF-8编码,不用依赖BOM这个“隐式标记”。
内容的提问来源于stack exchange,提问作者BAXOM
相关产品推荐
相关产品推荐

