使用视图的 HapiJS 编码问题

HapiJS encoding problems using views

当使用视图渲染使用特殊字符的内容时,我遇到了:

reply.view('index.jade', {name : 'Pagès'}); //outputs "Pagès"

模板只是:

p #{name}

但是,如果我只发送纯文本,它工作正常:

reply('<p>Pagès</p>');  //outputs "Pagès"

我试过 Jade 和 EJS,都渲染错误,所以我认为问题与 Hapi 有关。

以下代码(通过命令行)丢弃了 Jade 问题:

var jade = require('jade');
var fn = jade.compile('p #{name}');
var html = fn({name : 'Pagès'});
console.log(html);   // output ok -> <p>Pagès</p>

有什么建议吗?提前致谢

您的浏览器可能将网页解释为 ISO-8859-1

默认情况下,Hapi 使用 utf-8 字符集对其响应进行编码。这就是你想要的。您可以通过查看网络工具中的 HTTP 响应来仔细检查是否属于这种情况。但这不太可能是问题所在。

可能的罪魁祸首是您的 HTML 页面中的编码缺乏说明。尝试在页面的 <head> 元素中添加以下代码:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

这指定了文档的字符编码,应该可以解决渲染过程中的任何字符编码问题。