проблема кодирования со статическим ресурсом - PullRequest
0 голосов
/ 13 июня 2018

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

У меня проблема с кодировкой символов в приложении, которое в данный момент находитсяперенесен со старого стоечного сервера на экземпляр AWS EC2.Все, что я до сих пор пробовал, не решило проблему.

У меня есть сборка релиза моего файла war, скажем, app-1.0.war, который развернут на Tomcat 7.0.32 (да, я знаю, что он старыйЭто устаревшее приложение, и на данный момент я хочу, чтобы экземпляр EC2 был как можно ближе к существующему серверу), а JDK - 1.7.0_07.Одна и та же сборка в обеих средах.

Старая ОС - SLES (SUSE Linux Enterprise Server), а в AWS мы используем Ubuntu 16.04.3 LTS.

В обеих средах установлен языковой стандартas en_GB.UTF-8 .

Кроме того, в обеих средах Tomcat server.xml имеет URIEncoding = "UTF-8" в соединителе.

В обеих системах:если я использую file -i в минимизированном файле Javascript, в котором возникла проблема, он обнаружит файл как utf-8:

myjavascript.min.js: text/plain charset=utf-8

и при просмотре содержимого файла в файлеЯ вижу, что в обеих системах есть строка со знаком £ .

Однако, если я использую curl для запроса того же файла через Tomcat, старый хост подает егоправильно, в то время как новое окружение заменяет символ фунта на * , хотя оба имеют тип содержимого application / x-javascript; charset = UTF-8 .

Iпытался добавить -Dfile.encoding = UTF-8 к аргументам, но этого не произошло Помогите.В любом случае, он не использовался в старой среде.

1 Ответ

0 голосов
/ 14 июня 2018

Оказалось, что это не проблема кодирования файлов, а проблема с базой данных.

Я добавил некоторые специальные символы прямо в файл javascript в разобранном каталоге веб-приложения, а затем перезапустил tomcat.При использовании curl для получения файла я мог видеть, что символов там не было.Поэтому я проверил файл в файловой системе, конечно же, они были там.Затем я обнаружил, существует ли другой файл с тем же именем в другом месте, возможно, это какой-то кэш.

К настоящему времени был озадачен не я, а несколько других коллег.Затем я понял, что javascript составляет часть темы, которая используется CMS, встроенной в веб-приложение.Все содержимое CMS загружается в базу данных при первом развертывании приложения.

Так что, проведя часы в погоне за диким гусем, оказалось, что это нечто совершенно иное, чем я ожидал.

...