这个字符是什么“”,为什么会导致换行符?

我正在使用handlebars + hbs(在块/扩展帮助程序示例之后)为我的节点应用程序呈现html。 出于某种原因,我的一个div被推倒了1行。

我查看了Chrome浏览器的dom检查器,还有一行双引号:

讨厌双引号

这导致了这一点:
讨厌双引号结果

当我从dom检查器中删除双引号时(按退格或删除)布局是正确的:
在这里输入图像说明

在这里输入图像说明

废话是怎么回事? 这是一个非打印字符或东西? 在html /模板中没有任何东西,空格(或任何字符)不应该导致块级元素改变位置,对吧?

这是一些代码:
Layout.html的相关部分

<div id="details" class="east">{{{block "east"}}}</div> 

模板:

 <div id="details-title"> <h3 class="title elide" style="height:26px;">{{Title}}</h3> </div> <div id="details-body" class="content text"> <img class="card" src="{{ImagePath}}" /> <div> <span class="type">{{Type}}</span> </div> <div class="body"> {{{Body}}} </div> </div> 

块+扩展助手:( 从hbs示例 )

 hbs.registerHelper("extend", function (name, context) { var block = blocks[name]; if (!block) { block = blocks[name] = []; } if (typeof context.fn !== "undefined") { block.push(context.fn(this)); } }); hbs.registerHelper("block", function (name) { var val = (blocks[name] || []) .filter(function () { return true }) .join("\n"); // clear the block blocks[name] = []; return val; }); 

更新显然,这是字符65279 ,我的预编译的句柄模板都发出这个作为第一个字符时呈现。

所以我添加了一个黑客来删除作为模板输出中的第一个字符出现的BOM:

 var html = detailTemplate(res.data); if (html.charCodeAt(0) === 65279) { // hack to fix precompiled hbs template bug html = html.substring(1); } $("#details").html(html); 

事实certificate,块+延伸帮手没有任何关系的问题。 我假设这是我使用的编码的问题,但我不知道如何改变这一点。 上面的代码虽然修复了这个问题。

解决,保存与编码> UTF-8