Blazor页面嵌入子组件传入中文文本会被转义成Unicode字符的解决办法

博客随笔
36
Blazor
搜索引擎抓取
中文变成Unicode字符
中文被转义
Blazor网页编程
Bing蜘蛛抓取乱码

这些天升级了下博客的UI界面风格,由于好久没更新所以网站更新完就顺带去bing搜索的站长后台测试了下页面的抓取页面情况,然后就发现大部分页面在bing搜索的蜘蛛抓取后页面里的中文就成了看不懂的字符(其实也不是乱码 就是中文全部被转义成unicode字符),而且这些页面的html结构也出现了不闭合的情况,导致站长后台的蜘蛛抓取工具抓取后无法按照正常的html进行解析预览(如下图),但奇葩的是部分网页却是正常的。

有问题时抓取效果

Blazor页面嵌入子组件传入中文文本会被转义成Unicode字符的解决办法

折腾许久通过排除法一点一点的删除页面代码测试,最终才发现是带有markdown内容页输出文本转成html后再传入预览组件时就会出现这个情况,需要注意的是这个问题只有通过站长后台才能看出来,正常通过浏览器访问和其他三方模拟工具抓取确没有这个问题的(以前做百度玩的时候也有类似的情况)。

正常后抓取的效果

Blazor页面嵌入子组件传入中文文本会被转义成Unicode字符的解决办法

为什么中文被转义unicode

核心原因:子组件渲染时的 HTML 实体会自动转义

Blazor 默认会对组件输出的文本进行 HTML 转义(防止 XSS),即把特殊字符(包括中文在特定场景下)转为实体编码(如&#xxx;)。若子组件通过@ChildContent或参数传递中文内容,且未显式禁用转义,Blazor 会自动对非 ASCII 字符进行转义。

解决网页中文被转义的方法

子组件页面在输出html的时候 做一次解码System.Web.HttpUtility.HtmlDecode(this.Html)

@((MarkupString)System.Web.HttpUtility.HtmlDecode(this.Html))

是否对网页的收录有影响

目前站长感觉是有的,之前也知道这个事情但一直没找到解决办法就没管,明显的感觉原有的几个热门页面被下架或者流量下跌,今天顺带测试看了下这几个页面也都是这个情况,大概率是搜索引擎蜘蛛也不喜欢(或直接无法解析)。

基于BootstrapBlazor实现一个用户评论留言板组件效果
微软系列Blazor开源Web框架入门学习到放弃
历时半个月博客程序升级到BlazorAuto后网站性能反而下降了
个人使用Blazor与BootstrapBlazor重构网站的开发体验太棒了
暂无相关内容...
暂无相关内容...
免责声明 部分转载分享内容若侵犯您的权益,还请 邮件联系 侵删