Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419

Velocity и кодировка шаблона

10.02.2013, 02:21. Показов 2018. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Использую JavaMail+Velocity+Spring.
Появилась такая проблема: при создании шаблона ХТМЛ весь русский текст в полученном письме заменен на знаки вопроса. Шаблон имеет кодировку UTF-8, шаблонизатору тоже указываю эту кодировку. Шаблон точно с такой кодировкой, так как принудительно преобразую в Notepad++.

Вот часть кода, отправляющий сообщение:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public static void sendSuccessRegistrationMessage(String adress, String user){
        Map model = new HashMap();
        model.put("index",1);
        model.put("adress", adress);        
        model.put("user", user);      
        
        MimeMessagePreparator preparator = new message(model);
        mailSender.send(preparator); 
    }
    
    private static String getTemplateText(int index, Map model){
        switch (index) {
            case 0: 
                return VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "/template_1.vm", "UTF-8", model);
            case 1:
                return VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "/template_2.vm", "UTF-8", model);
            default:
                return null;
        }        
    }
    
    
    private static class message implements  MimeMessagePreparator {
        Map model = null;
 
        public message(Map model) {
            this.model = model;
        }        
 
        @Override
        public void prepare(MimeMessage mm) throws Exception {
            MimeMessageHelper message = new MimeMessageHelper(mm);
                message.setTo((String) model.get("adress"));
                
                message.setText(getTemplateText((int)model.get("index"),model), true);
        }        
    }
ШаблоН:
HTML5
1
2
3
4
5
6
7
8
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <h1>${user}, вы только что подтвердили регистрационные данные. Теперь вы можете пользоваться функционалом сайта. далее мы рекомендуем Вам заполнить анкету и записаться на собеседование.</h1>  
    </body>
</html>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2013, 02:21
Ответы с готовыми решениями:

Velocity не видит getters
Доброго времени суток. Разбираюсь с velocity. Имею темплейт следующего вида: &lt;html&gt;&lt;head&gt;...

Проверка Форм с помощью Velocity?
Не обходима создать проверку форм с помощью технологии Velocity и JSP Пробовал сделать как написано вот здесь что то не получилось....

Кодировка шаблона
Столкнулся с проблемой. Установив шаблон у меня половина слов (да почти все кроме текста статьи) начали отображаться иероглифами. Когда...

4
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
11.02.2013, 13:54
Вот это почитайте: . Там есть про кодировки в velocity.
0
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
11.02.2013, 13:56  [ТС]
Методом отладки я нашел то, что шаблонизатор возвращает все окей. Это JavaMail не хочет менять свою кодировку и отсылает в анси2 все... хотя в конфиге спринга стоит ЮТФ-8...
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
11.02.2013, 14:00
А там были свои заморочки... Вспомнить бы, какие. Надо было указывать кодировку в content-type, если я правильно помню. И еще что-то было, кодировка отдельно регулировалась для заголовка и для тела.
0
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
11.02.2013, 14:03  [ТС]
Я делаю вот так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private static class message implements  MimeMessagePreparator {
        Map model = null;
 
        public message(Map model) {
            this.model = model;
        }        
 
        @Override
        public void prepare(MimeMessage mm) throws Exception {
            mm.setSubject("Привет", "UTF-8");
            mm.addHeader("Content-Type", "text/html; charset=UTF-8");
            
            MimeMessageHelper message = new MimeMessageHelper(mm);
                message.setTo((String) model.get("adress"));        
                
                System.out.println(getTemplateText((int)model.get("index"),model));
                message.setText(getTemplateText((int)model.get("index"),model), true);
        }        
    }
но, если я правильно понял вас, то мне нужно сделать таким способом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
MimeMessage message = new MimeMessage( session );
 
message.setFrom( new InternetAddress( from ) );
message.addRecipient( Message.RecipientType.TO, new InternetAddress( toStringAddress ) );
message.addRecipient( Message.RecipientType.BCC, new InternetAddress( bccStringAddress ) );
 
// Setting the Subject and Content Type
message.setSubject( subject, "utf-8" ); // <----
 
// Create a message part to represent the body text
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent( messageContent, "text/html; charset=utf-8" ); // <----
 
// use a MimeMultipart as we need to handle the file attachments
Multipart multipart = new MimeMultipart();
 
// add the message body to the mime message
multipart.addBodyPart( messageBodyPart );
 
// Put all message parts in the message
message.setContent( multipart );
 
Transport.send( message );
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.02.2013, 14:03
Помогаю со студенческими работами здесь

Слетает кодировка при загрузке шаблона
Не могу загрузить готовый шаблон. Помогите, в чем причина Версия 2.5

Velocity.js
Уже все мозги сломал, не могу понять почему не работает код http://jsfiddle.net/7xE77/11/. Полностью повторил код у себя на Денвере. Уже...

Velocity vs AddForce in 2D
Доброго времени суток ! Собственно не понятно стало когда в 2D передвигать персонажа следует через изменение Velocity а когда через...

Velocity не двигает
Доброго времени суток, в общем, решил разобратся в движениее через velocity, но сразу же пришел к проблеме, на всех форумах пишут что этот...

Гравитация вместе и velocity
Доброго времени суток, есть игра, и персонаж в одно мгновение доходит до ямы и должен как-бы упасть, но rg.velocity = new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru