You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何将Unicode字符转换为HTML实体名称而非编码?

Unicode转HTML实体名称的实现方案

第三方类库推荐

  • HtmlAgilityPack:这款常用的HTML处理库支持实体名称替换,你可以基于已有的实体映射表构建字符-实体字典,借助库的工具类完成替换,或者自行遍历文本匹配字典内容。
  • AngleSharp:现代化的HTML解析与处理库,其HtmlEncoder组件可配置为优先使用实体名称编码,只需补充自定义的Unicode-实体名称映射即可覆盖默认的十进制编码行为。

自定义实现(无需第三方库)

如果不想引入外部依赖,可自行编写替换逻辑:

  1. 构建Unicode字符到HTML实体名称的映射字典(从你收集的实体列表中提取所需条目);
  2. 遍历输入文本,对每个字符进行判断:
    • 若字符存在于映射字典中,替换为对应的实体名称;
    • 若无对应实体,保留默认的十进制/十六进制编码(通过System.Net.WebUtility.HtmlEncode处理)或设为null。

示例C#代码:

// 初始化实体映射字典,可根据需求扩展更多条目
var entityMappings = new Dictionary<char, string>
{
    { 'é', "&eacute;" },
    { 'à', "&agrave;" },
    { 'ü', "&uuml;" }
};

string ConvertToNamedEntities(string input)
{
    var resultBuilder = new StringBuilder();
    foreach (char c in input)
    {
        if (entityMappings.TryGetValue(c, out var entityName))
        {
            resultBuilder.Append(entityName);
        }
        else
        {
            // 无对应实体时,使用默认编码;若要设为null,替换为 resultBuilder.Append(null) 并处理空值逻辑
            resultBuilder.Append(System.Net.WebUtility.HtmlEncode(c.ToString()));
        }
    }
    return resultBuilder.ToString();
}

XML生成的额外注意事项

由于你需要生成ASCII编码的XML文件,需注意:

  • 替换完成后,确保XML输出流的编码设置为ASCII;
  • 多数HTML实体名称在XML中不被默认识别,若必须使用这类实体,需在XML的DOCTYPE声明中引入实体定义,否则XML解析器会报错。若无需非XML预定义实体,建议仅使用XML原生支持的实体(如&lt;、&gt;等)。

内容的提问来源于stack exchange,提问作者ZTHawk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:09:33