|
|
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
Есть ini-файлик. с русским текстом. Хотел его считывать с помощью java.util.Properties, а он мне вопросики выдаёт. Как это можно вылечить с наименьшим количеством затрат? Вот такой код, например, Код: 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. Возвращает такое: Код: plaintext 1. 2. 3. 4. сам файлик в аттаче ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 13:40 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
файлик из аттача не качайте, он наверняка где-то в процессе перекодируется. Его содержимое - строка в кодировке windows-1251 Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 13:42 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
Используйте Properties.load(Reader) и не брезгуйте чтением документации RTFMpublic void load( InputStream inStream ) throws IOException Reads a property list (key and element pairs) from the input byte stream. The input stream is in a simple line-oriented format as specified in load(Reader) and is assumed to use the ISO 8859-1 character encoding; that is each byte is one Latin1 character. Characters not in Latin1, and certain special characters, are represented in keys and elements using Unicode escapes as defined in section 3.3 of The Java™ Language Specification. Но будьте внимательны. Ваш файл имеет кодировку cp1251, а ваш код использует дефолтную системную кодировку. Что может привести к эффекту "а у меня работает". Поэтому если у вас ресурсы строго прибиты к cp1251, то нужно и указывать cp1251 явно при загрузке этих ресурсов. И желательно перейти на UTF-8. Есть и ещё одно решение. Утилитой native2ascii можно конвертировать файл в Latin1/Unicode. Тогда он будет полностью независим от настроек системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 13:49 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
чтобы понять как должна быть записана кирилица в пропертис файле воспользуйтесь Properties.store(OutputStream out, String comments) можно использовать xml формат пропертис файла и пользовать loadFromXML(InputStream in) для вычитки. тогда кодировку можно указать в xml файле. и кирилицу можно писать как-есть в указанном формате без доп преобразований внешними утилитами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 13:57 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
Dmitry.чтобы понять как должна быть записана кирилица в пропертис файле воспользуйтесь Properties.store(OutputStream out, String comments) В документации к методу детально описано как именно будет. Даже "пользоваться" не нужно. Dmitry.можно использовать xml формат пропертис файла и пользовать loadFromXML(InputStream in) для вычитки. тогда кодировку можно указать в xml файле. и кирилицу можно писать как-есть в указанном формате без доп преобразований внешними утилитами. Аха. Он её напишет в cp1251, а loadFromXML вычитает в UTF-8. Не говоря уже о том на сколько уродлив XML для Properties. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 14:12 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
Всем спасибо. Проще всего оказалось вместо этого использовать библиотеку ini4j ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 15:06 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНе говоря уже о том на сколько уродлив XML для Properties. Точно! У него есть только один единственный плюс - можно параметры по-русски записать. :) ...ну, это, конечно, не для тех, кто обычным notepad'ом для этого пользуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 15:07 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 15:10 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
GarrickТочно! У него есть только один единственный плюс - можно параметры по-русски записать. :) ...ну, это, конечно, не для тех, кто обычным notepad'ом для этого пользуется. Это вообще зачем? Если и параметры на русском писать, то надо сразу 1С брать вместо Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 15:13 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGarrickТочно! У него есть только один единственный плюс - можно параметры по-русски записать. :) ...ну, это, конечно, не для тех, кто обычным notepad'ом для этого пользуется. Это вообще зачем? Если и параметры на русском писать, то надо сразу 1С брать вместо Java. Ну, в смысле "значения параметров". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 15:15 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
RSmanВсем спасибо. Проще всего оказалось вместо этого использовать библиотеку ini4j Ну, как проще. Вы временно заткнули текущую проблему не пытаясь разобратся в её сути. И она вам ещё аукнется. Ваше приложение просто не будет работать на компьютере с другими настройками ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 15:17 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
GarrickНу, в смысле "значения параметров". Так значения можно и в плоском файле. Важно только кодировку при чтении указать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 15:22 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczRSmanВсем спасибо. Проще всего оказалось вместо этого использовать библиотеку ini4j Ну, как проще. Вы временно заткнули текущую проблему не пытаясь разобратся в её сути. И она вам ещё аукнется. Ваше приложение просто не будет работать на компьютере с другими настройками ОС. Ну хорошо, а как тогда? Конвертировать файл утилитой native2ascii как-то не хочется, он читаемый должен быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 16:00 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
RSmanНу хорошо, а как тогда? Конвертировать файл утилитой native2ascii как-то не хочется, он читаемый должен быть. не надо никакой native2ascii, надо np++ и конвертируй в windows-1251 и обратно в UTF-8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 16:13 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
am_sasaRSmanНу хорошо, а как тогда? Конвертировать файл утилитой native2ascii как-то не хочется, он читаемый должен быть. не надо никакой native2ascii, надо np++ и конвертируй в windows-1251 и обратно в UTF-8 Почему "конвертируй в windows-1251", если он и так сейчас в этой кодировке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 16:23 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
RSmanНу хорошо, а как тогда? 20725013 Вы ещё и не внимательно ответы читаете. Используйте метод, который в качестве аргумента принимает Reader, а не InputStream. Для вашего случая - простейшее решение. RSmanКонвертировать файл утилитой native2ascii как-то не хочется, он читаемый должен быть. Ну, если это не ресурс, а внешний файл, то, может, есть смысл использовать и системную кодировку. Кто знает что там у пользователя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 16:25 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
am_sasaне надо никакой native2ascii, надо np++ и конвертируй в windows-1251 и обратно в UTF-8 Ага. А Properties.load(InputStream) понимает только Latin1. И как ему UTF поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 16:26 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
RSmanНу хорошо, а как тогда?Придется экранировать вручную , например: Привет, World !!! => Привет, World !!! Но лучше воспользоваться возможностями IDE, где уже имеется возможность автоматического экранирования символов при редактировании .properties файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 16:28 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, еще раз большое спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 16:33 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGarrickНу, в смысле "значения параметров". Так значения можно и в плоском файле. Важно только кодировку при чтении указать. В XML кодировка указана в заголовке, а как узнать в какой кодировке INI или PROPERTIES файл? Опять же при чтении properties файла в нестандартной кодировке надо очередной огород городить. В подобных случаях я голосую за XML. native2ascii конечно быстрее, а eclipse даже умеет это делать автоматически, но потом читать неудобно :). Опять же, как говорится: "на вкус и цвет....". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 17:34 |
|
||
|
Как научить java.util.Properties русскому языку?
|
|||
|---|---|---|---|
|
#18+
GarrickВ XML кодировка указана в заголовке, а как узнать в какой кодировке INI или PROPERTIES файл? Жирным комментарием в заголовке. Я вообще внешние properties файлы снабжаю детальными коментариями. GarrickОпять же при чтении properties файла в нестандартной кодировке надо очередной огород городить. Какой ещё огород? Обычный Reader. Garricknative2ascii конечно быстрее, а eclipse даже умеет это делать автоматически, но потом читать неудобно :). Опять же, как говорится: "на вкус и цвет....". Да, я тоже ниразу не видел чтобы кто-то пользовался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 17:51 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39505767&tid=2122659]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 380ms |

| 0 / 0 |
