Приложение Heroku не отображает символы кириллицы с кодировкой UTF-8 по умолчанию

Я следую этот учебник по Баелдунгу, и хотя языки меняются правильно, всякий раз, когда я пытаюсь перейти на кириллический язык (болгарский, русский), символы представляют собой просто вопросительные знаки. Я размещаю свое приложение на Heroku.

Я попытался выполнить heroku config:add LANG=en_US.UTF-8 в интерфейсе командной строки Heroku, но это не дало никакого эффекта.

Это код для моих LocaleResolver,ReloadableResourceBundleMessageSource,LocaleChangeInterceptor и переопределенного метода addInterceptors

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        slr.setDefaultLocale(Locale.US);
        return slr;
    }

    @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:messages");
        messageSource.setDefaultEncoding("UTF-8"); 
        return messageSource;
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        lci.setParamName("lang");
        return lci;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }

Я ожидаю получить "Добре дошъл" (Добро пожаловать на болгарском языке), однако я просто получаю ??????? вместо.

РЕДАКТИРОВАТЬ 1 После добавления Пакет сборки Heroku Locale я получаю следующую ошибку, когда пытаюсь развернуть свое приложение в Heroku:

-----> Locale app detected
cat: /tmp/build_1406e9f58f41cacf3931deb52b55d687/.locales: No such file or 
directory
!     Push rejected, failed to compile Locale app.
!     Push failed

Вы создали файл .locales в своем репозитории и добавили его в Git?

codefinger 30.05.2019 23:38

Да, ошибка в Edit 1 возникает после того, как я добавляю файл .locales в корень моего приложения и отправляю его на Github. Я настроил свое приложение Heroku для сборки ветки git.

Pete 31.05.2019 05:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
448
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы установили пакет сборки локали, удалите созданный вами файл .locales и пакет сборки, перейдя в настройки приложения Heroku.

Я исправил проблему, применив следующие настройки в моем файле application.properties:

spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true

Кроме того, обратите внимание, что первая сборка после применения этих настроек может быть очень медленной — если вы создаете в Eclipse и привыкли собирать приложение Heroku примерно за 1 минуту, имейте в виду, что сборка может занять более 5 минут.

Другие вопросы по теме