| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > В какой кодировке Java читает файл? |
| Автор: korob2001 3.10.2014, 20:13 | ||||||
| Привет, всем! Если вопрос не совсем корректно задан, извините - у меня уже голова квадратная. Опишу чуть подробнее суть проблемы. Как-то мне довелось писать одну программу, она замечательно работала, пока не стал вопрос о том, что бы удовлетворить русско-язычную публику. Так как формат писем у каждого плагина разный (под форматом я подразумеваю дизайн - оформление), каждый плагин содержит свои HTML шаблоны, примерно такого вида en_template.html, для каждого языка свой:
Такие HTML файлы находятся внутри jar архива каждого плагина, когда программа с помощью плагина получает содержимое этого файла происходит подстановка спец. слов (таких как @UserName). Этот HTML файл в кодировке UTF-8. Вот так программа формирует и отправляет Email:
Отсюда видно, что кодировку устанавливаю первым делом, сразу же после создания объекта HtmlEmail, но если шаблон на русском языке, то приходит примерно такое:
Если пишу например Subject прямо в коде, на русском языке, тогда он отображается как положено, но если читаю из файла, вложенного в jar плагина - результат можно видеть выше. ;((((( Понимаю, что проблема с кодировкой. Если нужно привести ещё какую-то часть кода, то скажите какую именно, я приведу. Заранее спасибо за помощь. |
| Автор: sgrey 5.10.2014, 18:32 |
| проблема скорее всего здесь в том, что файл сохранён не в юникоде, а в другой кодировке. Попробуй файл сохранить в UTF-8 |
| Автор: Pawl 5.10.2014, 23:17 | ||||
Может, перед отправкой принудительно кодировать сообщение из файла в UTF-8? К примеру, так:
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/V-kakoy-kodirovke-Java-chitayet-fayl-id542ed998ae2015d17c8b4567#findElement_E7045_5431a759ae20152978682ea6_0 |
| Автор: Pawl 5.10.2014, 23:24 | ||
Пардон, вместо fileName имелось ввиду, конечно, текстовое содержимое файла. Вообще, аргументы д. б. типа String, так что
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/V-kakoy-kodirovke-Java-chitayet-fayl-id542ed998ae2015d17c8b4567#findElement_E7045_5431a90dae20155b78682f70_0 |
| Автор: serger 7.10.2014, 07:18 |
| Скорее всего двойное преобразование кодировок. Почитайте: http://skipy.ru/technics/encodings.html Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/V-kakoy-kodirovke-Java-chitayet-fayl-id542ed998ae2015d17c8b4567#findElement_E7045_543369a2ae2015613f68307d_0 |
| Автор: korob2001 7.10.2014, 17:35 |
| Спасибо, сейчас почитаю и завтра на работе буду пробовать. На работе, межу делом, загрузили другой работой, даже сюда зайти времени не было. Добавлено через 5 минут и 56 секунд Да, кстати, я забыл сразу написать. Писал я эту программу на своём ноутбуке, когда на нём её запускал, всё работало правильно. Я так понимаю из-за того, что локаль на нём русская была ru_RU, а когда перенёс приложение на сервер, где локаль нидерландская nl_BE. После чего пробовал явно указывать локаль, в зависимости от того, на каком языке шаблон, но всё равно не помогло. |
| Автор: korob2001 9.10.2014, 12:02 | ||||||||
| Доброе утро! Почитал статью. Перевёл кодировку properties файлов назад в iso-8859- , откуда так же берутся Тема письма и другая дополнительная информация, они так же находятся в jar плагина. Вот, примерно в таком виде:
Subject здесь на русском языке и то, что в properties файлах нужно использовать только кодировку iso-8859-1, а остальные символы нужно прописывать кодами \uXXXX, меня немного смутило. Дело в том, что я переводил кодировку этих файлов тоже в UTF-8 и в принципе программа читала эти файлы, пусть и не совсем правильно. Символы русского алфавита я всегда писал в properties файлы, без всяких кодов. В общем, полез я в проект с блокнотом и выяснилось, что это NetBeans переводил коды \uXXXX в символы и обратно симовлы в коды \uXXXX. Потому раньше для меня это всё происходило прозрачно, в смысле никаких кодов я никогда туда не писал. Насколько я понимаю проблема в коде, который читает HTML шаблон из файла, т.е. где-то здесь.
Попробовал изменить сделать так:
Т.е указал кодировку. Теперь получаю письмо в таком виде:
Причём первая строка это Subject из properties файла, она так же присутствует и в теле письма. Вот она теперь отображается правильно, зато всё остальное, нет. ;(((( |