2016-09-19 15 views
0

Я работаю над веб-сайтом, который перед переносом всей маршрутизации в приложение Node/Express/EJS имел всю кодировку символов как Shift_JIS (японская кодировка не поддерживается со стороны узла). Теперь все страницы отображаются как UTF-8; есть некоторые службы, которые запускаются на веб-сайте, которые зависят от кодировки Shift_JIS.Проблемы с кодировкой Node + Express + EJS (UTF-8 vs Shift_JIS)

Я попытался создать собственное промежуточное программное обеспечение, чтобы заставить заголовок для Vary: Accept-Encoding (хотя я не уверен, что я сделал это правильно), чтобы изменить кодировку html на Shift_JIS (это работает для других заголовков и других атрибутов HTML, таких как как Doctype), но все постоянно отображается как UTF-8.

Я видел некоторые из shivs, которые добавляют функциональность для альтернативных кодировок в узле, но я не уверен, как я могу применить их в своем приложении Express.

Я бы предоставил минимальный рабочий пример, но я думаю, что проблема не требует пояснений, и я не могу предоставить какой-либо рабочий код из проекта.

В обзоре: У меня есть сайт, который -needs- будет отображаться в кодировке Shift_JIS, а не UTF-8. Я попробовал некоторые решения и ударил кирпичную стену.

Любая помощь будет невероятно оценена. Это действительно блокирует развитие, и у меня есть опыт во многих областях, но внешнее кодирование не является одним из них.

ответ

1

Возможно создание собственного промежуточного программного обеспечения на основе https://www.npmjs.com/package/iconv-js преобразует все ваши данные в Shift-JIS или обнаруживает что-то в запросе и только преобразует ответы на определенные запросы в Shift-JIS.

См. https://coderwall.com/p/miq0iw/node-express-middleware-to-post-process-requests для примера создания своего промежуточного программного обеспечения для последующей обработки.

+0

Эй, это очень далека от проблемы, но после долгих проб и ошибок это то, что я делал независимо от августа. Я сделал это довольно постепенно и многому научился, поэтому любой, кто сталкивается с этой проблемой, bknights имеет точное правильное решение – MikeJannino