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

Handlebars.Net渲染日文字符转为Unicode十进制编码的修复方法咨询

Handlebars.Net渲染日文字符转为Unicode十进制编码的修复方法咨询

嗨,这个问题我之前也遇到过!其实是Handlebars.Net默认开启了HTML转义导致的——它会把非ASCII字符自动转换成HTML实体编码,所以你的「あ」才变成了あ。这里有两种简单的修复方法:

方法1:针对单个变量关闭编码(推荐局部场景)

Handlebars里提供了三重大括号语法,用它包裹变量就能跳过HTML转义,直接输出原始字符。修改你的模板字符串即可:

public class TemplateData
{
    public string inputstring = "あ";
}

public static string HandleBar()
{
    var message = "{{{inputstring}}}"; // 把双大括号改成三大括号
    var handlebars = Handlebars.Create();
    // 保留NewtonsoftJson配置,不影响修复
    handlebars.Configuration.UseNewtonsoftJson();
    var template = handlebars.Compile(message);
    var result = template(new TemplateData());
    return result; // 现在会输出「あ」而不是编码后的字符
}

方法2:全局关闭HTML转义(适合全项目不需要转义的场景)

如果你的所有模板都不需要HTML转义,可以直接修改Handlebars的全局配置,关闭自动转义功能:

public class TemplateData
{
    public string inputstring = "あ";
}

public static string HandleBar()
{
    var message = "{{inputstring}}";
    var handlebars = Handlebars.Create();
    handlebars.Configuration.UseNewtonsoftJson();
    // 添加这一行,全局禁用HTML转义
    handlebars.Configuration.EscapeHtml = false;
    var template = handlebars.Compile(message);
    var result = template(new TemplateData());
    return result; // 同样会输出原始的「あ」
}

简单解释下原理:Handlebars.Net默认的行为是对输出内容做HTML安全转义,避免XSS风险,但这会把非ASCII字符转成对应的HTML实体编码。上面两种方法分别从局部和全局层面跳过了这个转义逻辑,就能得到你想要的原始日文字符啦。

备注:内容来源于stack exchange,提问作者Worthy7

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 13:09:32