Собственно сабж. Если делать всё по инструкции, то есть шанс получить такой результат:
Если посмотреть на код внимательно, окажется что страница физически передана как CP-1251, а контент (и заголовок) — верные UTF-8. При этом русский поиск в SOLR, статистика и пр. сервисы работают и отображаются штатно.
Проблема решилась вот как:
- [dspace]/bin/dspace.bat — Находим строку
java %JAVA_OPTS% -classpath "%DSPACE_CLASSPATH%" org.dspace.app.launcher.ScriptLauncher %*
и делаем так:
java %JAVA_OPTS% -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -classpath "%DSPACE_CLASSPATH%" org.dspace.app.launcher.ScriptLauncher %* - Идем в апплет запуска томкэта во вкладку Java и в Options добавляем:
- -Dfile.encoding=UTF-8
- -Dsun.jnu.encoding=UTF-8
- Можно строку
-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8
и в апплет jre добавить.
Ну а после этого перезапуск томкэта и стандартное лекарство от всего:
И как результат:
[UPD]
Ну а если вникать в суть проблемы, в её физику… или логику? То окажется что у DSpace всё сделано так, что запросто может получиться ситуация, когда у UI и CLI разная кодировка. Более того, может случиться ситуация когда у JSPUI будет file.encoding=UTF-8 и sun.jnu.encoding=UTF-8, у SOLR будет file.encoding=UTF-8 и sun.jnu.encoding=CP1251 а у CLI (читай, макрос filter-media и всё остальное что стартует через dspace/dsrun) будет file.encoding=CP1251 и sun.jnu.encoding=CP1251. И дело не в Windows, ведь вместо CP1251 можно получить POSIX, ASCII… да что угодно, но не UTF-8. Как оказалось, с одной стороны бага висит, а с другой стороны как-то совершенно не внятно в Encoding problems (b) вроде бы что-то и написано, только вот додумывать приходится самостоятельно.
[UPD]
ВАЖНО
Подобными действиями можно сломать другие макросы, например, filter-media. Т.е. если в скрипте dspace сделать правки по локали и кодировке, макрос filter-media начнет работать не верно и извлекать поврежденный текст. решение проблемы простое — иметь одновременно два варианта скрипта dspace. Один оригинальный, а второй с именем dspace_utf к примеру, и правками. Тогда операции с oai нужно делать через него, а всё остальное через оригинальный скрипт. Более того, можно сделать вариант с -Xmx 1280M или еще с чем-то, не нужным постоянно, но необходимым разово (например, для запуска filter-mrdia -f на большом фонде). Юниксвей короче… больше скриптов, хороших и почти одинаковых.