В какой-то момент проявилась одна заметная проблема, мешающая мне осуществить абсолютно 100% замену PHP на Groovy для веба без использования относительно тяжеловесного MVC-фреймворка Grails.
Это касается *.gsp страниц (Groovy Server Pages), представляющих собой html-страницы со вставками вида <% .. %> с произвольным кодом на Groovy или Java, или на языке оригинала: «GSP means GroovyServer Pages, which is similar to JSP (JavaServer Pages).»
Точно такая же функциональность в PHP реализуется вставками <? .. ?> (причем для PHP наличие такого блока является обязательным, даже если он реализует классы или бизнес-логику; если после такого блока будет находиться обычно невидимый пробел или перенос строки, то он попадёт в вывод, что может привести к проблемам).
На сайте груви написано: «GSP are not maintained as a standalone module. But it has been forked and reintegrated in Grails.» Но, тем не менее, как и груви-сервлеты, gsp-страницы работают без Grails, достаточно просто подключить груви к приложению.
Проблема заключалась в том, что в этих gsp-страницах русский текст превращался в «кракозябры». В груви-сервлетах, как в «настоящих», так и скриптового вида, такого не наблюдалось.
Методом научного тыка выяснилось, что если исходник gsp перевести в кодировку по-умолчанию на системе (например, cp1251 для Windows), то проблема решается (при этом вывод страницы идет уже в кодировке UTF-8).
А это чистой воды подсказка: идем в исходники сервлета groovy.servlet.TemplateServlet.java, который отвечает за разбор таких страниц, и находим там строку:



