【问题标题】:Node.js public static folder to serve js with utf-8 charsetNode.js 公共静态文件夹,用于为 js 提供 utf-8 字符集
【发布时间】:2012-12-15 05:51:18
【问题描述】:

我正在使用 node.js 和 express 将静态 JavaScript 文件提供给单页应用程序。 在 node.js 服务器代码中,我使用 express.static 来允许公共访问文件夹

app.use(express.static(__dirname + '/public/'));

在客户端,我使用$.getScript来获取存储在public文件夹中的JavaScript文件,例如:

$.getScript("js/init.js");

当我尝试获取一些带有重音字母或某些 UTF-8 特殊字符的 JavaScript 文件时,我得到了奇怪的字符,而不是我想要的。

在我定义公用文件夹时有什么方法可以设置字符集吗?

【问题讨论】:

  • 您确定您的 init.js 文件保存在 utf8 中吗?
  • 或者只是没有字符? :)

标签: javascript jquery node.js utf-8 express


【解决方案1】:

What's the simplest way to serve static files using node.js? 的回答提示我在静态之前插入您自己的中间件。

下面的代码找到*.js文件并将字符集设置为utf-8。

app.use(function(req, res, next) {
  if (/.*\.js/.test(req.path)) {
    res.charset = "utf-8";
  }
  next();
});
app.use(express.static(__dirname + '/public/'));

执行此操作后,查找以下响应标头。

Content-Type: application/javascript; charset=utf-8

【讨论】:

  • 这是一个很好的答案;当使用superagent 测试从 Express 静态服务器检索到的 .JS 文件的文本时,这实际上救了我,因为 superagent 不会返回文件的文本,除非它具有 UTF-8 编码。
  • 您还可以使用 Node.js path 库获得更具表现力的条件。 var path = require('path'); if (path.extname(req.path) === '.js') { // it's JS }
【解决方案2】:

在您的 html 页面中,编码必须与资源文件的编码相同(或相反)

确保在 head 部分设置元标记:

<meta charset='utf-8'></meta>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 2021-10-25
    • 2021-10-03
    • 2019-03-31
    • 2013-03-06
    • 2013-10-19
    • 2014-07-20
    相关资源
    最近更新 更多