Node + Express + EJS字符编码问题(UTF-8 vs Shift_JIS)

时间:2016-09-19 15:18:20

标签: node.js express encoding ejs shift-jis

我正在开发一个网站,在我将所有路由移植到Node / Express / EJS应用程序之前,将所有字符编码都设置为Shift_JIS(节点本身不支持的日语编码)。现在,所有页面都呈现为UTF-8;在网站上运行的某些服务依赖于Shift_JIS编码。

我已经尝试制作自定义中间件来强制Vary的头:Accept-Encoding(虽然我不确定我做对了),将编码html更改为Shift_JIS(这适用于其他标头和其他HTML属性,如Doctype)但是一切都不断呈现为UTF-8。

我见过一些为节点中的替代编码添加功能的shivs,但我不确定如何将它们应用到我的Express应用程序。

我会提供一个最小的工作示例,但我认为问题是不言自明的,我无法从项目中提供任何可用的代码。

回顾:我有一个网站,需要以Shift_JIS编码呈现,而不是UTF-8。我尝试了一些解决方案并打了一堵砖墙。

任何帮助都会非常感激。这实际上阻碍了开发,我在很多领域都有经验,但外国编码不是其中之一。

1 个答案:

答案 0 :(得分:1)

您可以根据https://www.npmjs.com/package/iconv-js创建自己的中间件,将所有输出转换为Shift-JIS或检测请求中的内容,并仅将对某些请求的响应转换为Shift-JIS。

有关创建自己的后处理中间件的示例,请参阅https://coderwall.com/p/miq0iw/node-express-middleware-to-post-process-requests