Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js公共静态文件夹,用于为js提供utf-8字符集_Javascript_Jquery_Node.js_Utf 8_Express - Fatal编程技术网

Javascript Node.js公共静态文件夹,用于为js提供utf-8字符集

Javascript Node.js公共静态文件夹,用于为js提供utf-8字符集,javascript,jquery,node.js,utf-8,express,Javascript,Jquery,Node.js,Utf 8,Express,我使用node.js和express将静态JavaScript文件提供给一个单页应用程序。 在node.js服务器代码中,我使用express.static允许公共访问文件夹 app.use(express.static(__dirname + '/public/')); 在客户端,我使用$.getScript获取存储在公用文件夹中的JavaScript文件,例如: $.getScript("js/init.js"); 当我尝试获取一些带有重音符号的字母或一些UTF-8特殊字符的JavaSc

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

app.use(express.static(__dirname + '/public/'));
在客户端,我使用
$.getScript
获取存储在公用文件夹中的JavaScript文件,例如:

$.getScript("js/init.js");
当我尝试获取一些带有重音符号的字母或一些UTF-8特殊字符的JavaScript文件时,我得到的是奇怪的字符,而不是我想要的字符


当我定义公用文件夹时,有没有办法设置字符集?

在html页面中,必须使用与资源文件相同的编码(或者相反的方式)

确保在head部分设置了meta标记:

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

的一个回答给了我一个提示,在静态之前插入您自己的中间件

下面的代码查找
*.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

你确定你的init.js文件是用utf8保存的吗?还是没有字符?:)这是一个很好的答案;当使用
superagent
测试从Express静态服务器检索到的.JS文件文本时,这实际上节省了我的时间,因为
superagent
没有返回文件文本,除非它使用UTF-8编码。您还可以使用Node.JS
path
库获得更具表现力的条件<代码>变量路径=要求(“路径”);if(path.extname(req.path)=='.js'){//it's js}