DotNet开发
#Blazor #搜索引擎抓取 #中文变成Unicode字符 #中文被转义 #Blazor网页编程 #Bing蜘蛛抓取乱码

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

Y Yuan天空
2025-11-18 233 阅读

正文详情 · 783 字

这些天升级了下博客的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))

是否对网页的收录有影响

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


内容创作不易,转载请务必注明本文来源链接,感谢您的尊重与支持~

相关推荐