Grails - обслуживать HTML-файлы как UTF-8? - PullRequest
3 голосов
/ 20 сентября 2011

UTF-8 не работает на файлах .html, обслуживаемых через tomcat через / web-app.Если я открою файл напрямую с помощью file:///, он будет хорошо.Если я просматриваю файл во время запуска приложения, он выглядит нормально.Однако, когда я развернут войной, символы UTF-8 выглядят искаженными.

Тип содержимого ответа кажется правильным ... Content-Type: text/html;charset=UTF-8, а сам HTML-файл, кажется, даже имеетправильные мета-объявления.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

Для соединителя Tomcat установлено значение "UTF-8" для кодировки URIEnc по умолчанию, поэтому я не думаю, что это тоже проблема.GSP рендеринг в порядке;проблема возникает только в файле HTML.

Что здесь может происходить?

РЕДАКТИРОВАТЬ: Используя Firefox, я сохранил локальную копию необработанного файла HTML ифайл для чтения напрямую из file:///... для сравнения.Разница между файлами only заключается в том, что в версии Tomcat все символы, отличные от ascii, заменены следующим:

, который отображается как пустой квадрат или знак вопроса в зависимости от редактора.вы используетеСам символ выглядит как EF BF BD, который заменяет all не-ascii символов.Каким-то образом при обслуживании файла tomcat или grails просто топают юникодные байты.Что может сделать , что ?

РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ: Даже этот тестовый файл w3 ведет себя так же, как мои файлы, указывая, что мои файлывероятно, хорошо, и с Tomcat / Grails что-то не так.

Ответы [ 3 ]

4 голосов
/ 24 октября 2012

Сегодня я столкнулся с этой точной проблемой локально, я смог нормально работать, но при развертывании с tomcat или glassfish все мои файлы были в неправильной кодировке.Сотрудник наткнулся на решение.

Чтобы кодирование работало правильно при использовании grails с tomcat, вы должны установить следующие параметры tomcat:

server.xml:
 <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8" />

catalina.sh:
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms2048m -Xmx2048m
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
-XX:MaxPermSize=256m -XX:+DisableExplicitGC"

Убедитесь, что cntl-f5 при проверке результатов, чтобы избежать кеша

0 голосов
/ 30 сентября 2011

Grails 1.3.7, по крайней мере, не может правильно обслуживать HTML-файлы. Напишите свой собственный контроллер файлового сервера.

0 голосов
/ 20 сентября 2011

Есть ли какие-либо сопоставления фильтров до charEncodingFilter в вашем web.xml? Это частая причина того, что страницы отображаются с неверной кодировкой. charEncodingFilter обычно должно быть самым первым отображением фильтра в вашем файле web.xml. Большинство плагинов Grails, которые вставляют сопоставления фильтров, имеют специальную логику для вставки после этого.

...