Handlebars.js不会将unicode作为JSON的密钥处理?

时间:2013-02-02 11:41:50

标签: javascript templates handlebars.js cjk mustache

我正在使用handlebars.js和JSON数据来填充我的HTML。如果我调用一个CJK unicode字符的JSON密钥,我的测试将失败。 是否有任何解决方法可以使用handlebars.js成功处理(CJK)unicode键?

这有效[1]:

var source2   = '<p>{{blatitle}}<br />{{bla.zht}}} / {{bla.pyn}} / {{bla.dfn}}</p>';
var template = Handlebars.compile(source2);
var html  = template(jsonDictSample);
$('#container2')
  .append(html);

这不起作用(重复案例,只将密钥'bla'更改为unicode''作为密钥)[1]:

var source3   = '<p>{{title}}<br />{{口.zht}} / {{口.pyn}} / {{口.dfn}}</p>';
var template = Handlebars.compile(source3);
var html  = template(jsonDictSample);
$('#container3')
  .append(html);

注1:我知道我可以转换为unicode字符“口”并使用“u53E3”,但我希望将JSON与CJK unicode字符保持为“口”。

Note2 - Mustache工作原理: CJK unicode键与Mustache.js [2]配合使用,因此它不是JSON问题,而是handlebars.js问题。由于我需要高级功能,我仍然在寻找Handlebars解决方案。

[1]:http://jsfiddle.net/YqhKG/ - 车把测试:失败。
[2]:注意 - mustache.js测试:工作正常。

提前致谢。

1 个答案:

答案 0 :(得分:2)

下载 Handlebars.js v.1.0.11或以上。


最近回答了github错误报告。修复是替换字母数字正则表达式:

[A-ZA-Z0-9 _ $: - ]

进入unicode complient regex:

[^ \ S“#% - ,. /;! - &GT; @ [ - \ ^`{ - 〜]

完成on github by kpdecker