Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251? / 25 сообщений из 88, страница 1 из 4
21.10.2016, 19:36
    #39331898
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Ребят, помогите. Наверное проблема уже заезженная, но не могу решить.

Есть properties файл (в UTF-8), в нем написано "Мая ела кашу ложкой".
Мне нужно прочитать эту надпись, сконкатенировать к ней дату "21.10.2016" и записать в БД кодировка которой cp1251.

Вот как я читаю и конвертирую:
Код: java
1.
comment = new String(AppProp.getProperty("db.comment").getBytes("Cp1251"));


в результате в бд крякозябры. =(

Вот не работает:
Код: java
1.
comment = new String(AppProp.getProperty("db.comment").getBytes("ISO8859-1"));


Так работает на одной машине (т.е. в БД пишутся не крякозябры), но не работает на другой машине ().

и вот еще вариант, который пишет в бд крякозябры:
Код: java
1.
2.
3.
comment = new String(AppProp.getProperty("db.comment"));
byte[] bytesInUTF8 = comment.getBytes("UTF-8");
comment = new String(bytesInUTF8, "Cp1251"); 



Помогите советом, как прочитать строку и записать ее в БД кодировка которой 1251. Заранее спасибо за советы и помощь.
...
Рейтинг: 0 / 0
21.10.2016, 19:38
    #39331899
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Из Java кодировки (UTF-8) в кодировку БД должен сам JDBC драйвер конвертировать. Если он конечно не криво настроен

Т.ч. ничего руками конвертировать не нужно.
...
Рейтинг: 0 / 0
21.10.2016, 19:45
    #39331904
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Leonid Kudryavtsev,
так
Код: java
1.
comment = new String(AppProp.getProperty("db.comment"));


тоже не работает.
...
Рейтинг: 0 / 0
21.10.2016, 19:48
    #39331905
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Не верю ( C ) Станиславский

И какую ошибку выдает? Что такое AppProp? Как Вы его считываете из внешнего файла
...
Рейтинг: 0 / 0
21.10.2016, 19:57
    #39331907
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Leonid Kudryavtsev,

Класс, который читает файл. В нем метод:

Код: 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.
public static String getProperty(String key) throws IOException {
        if (properties == null || properties.size() == 0) {
            String mainClassLocation = FilenameUtils.getFullPath(App.class.getProtectionDomain().getCodeSource().getLocation().getPath());
            String propertiesFileFullPath = mainClassLocation + "app.properties";
      
            InputStream fis = null;

                fis = new FileInputStream(propertiesFileFullPath);

            Properties prop = new Properties();

                prop.load(fis);

            for (String k : prop.stringPropertyNames()) {
                if (properties == null)
                    properties = new HashMap<String, String>();
                String value = prop.getProperty(k);
                properties.put(k, value);
            }
        }
        if (properties.containsKey(key))
            return properties.get(key);
        else
            return null;
    }
...
Рейтинг: 0 / 0
21.10.2016, 23:46
    #39332010
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
May12 InputStream fis = null;
fis = new FileInputStream(propertiesFileFullPath);

Properties prop = new Properties();

prop.load(fis);

AFAIK
Заменить InputStream на Reader и указать правильную кодировку входных данных.

https://docs.oracle.com/javase/7/docs/api/java/util/Properties.html#load(java.io.Reader)
...
Рейтинг: 0 / 0
22.10.2016, 00:53
    #39332032
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Leonid KudryavtsevИз Java кодировки (UTF-8)
Это бессмысленное утверждение, у строки нет кодировки. Кодировка есть у байтов, а строка - это набор символов. Возможно вы говорите про коды символов (числовое значение char), но это к заданному вопросу не относится, так как символы после декодирования содержимого файла и создания строки уже кривые.
...
Рейтинг: 0 / 0
25.10.2016, 10:17
    #39333307
May12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Leonid Kudryavtsev,

Спасибо.
...
Рейтинг: 0 / 0
25.10.2016, 12:06
    #39333443
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Andrei TLeonid KudryavtsevИз Java кодировки (UTF-8)
Это бессмысленное утверждение, у строки нет кодировки.
Если Вы не видите в чем-то смысла, значит одно из трех:
- смысла там нет
- Вы не смогли его понять
- Истина где-то рядом (C) авторы X-Files

Человек немного ошибся, обычно кодировка строки символов в памяти jvm, не UTF-8, хотя и Unicode :).

2TC: В связи с чем, файл properties можно прочесть указав (явно или не очень), что он в кодировке UTF-8, и тем самым он будет переведен в кодировку jvm. И дальше jdbc драйверу можно будет указать в какой кодировке работает сеанс связи с СУБД (хотя он скорее всего и без вмешательства в курсе). Дальше все заработает само.
...
Рейтинг: 0 / 0
25.10.2016, 12:23
    #39333470
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Сергей Арсеньев,

Чувак, ты странный.
Сергей Арсеньевобычно кодировка строки символов в памяти jvm
Специально для тебя еще раз:
Andrei TУ строки нет кодировки. Кодировка есть у байтов, а строка - это набор символов. Возможно вы говорите про коды символов (числовое значение char), но это к заданному вопросу не относится, так как символы после декодирования содержимого файла и создания строки уже кривые.
Сергей Арсеньевфайл properties можно прочесть указав (явно или не очень), что он в кодировке UTF-8, и тем самым он будет переведен в кодировку jvm
1) Файлы .properties по умолчанию читаются в ISO-8859-1.
2) Кодировки у JVM нет, по крайней мере в области обсуждаемого вопроса. Есть кодировка строковых литералов из текста программы, но это здесь ни при чем.
...
Рейтинг: 0 / 0
25.10.2016, 12:28
    #39333475
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Andrei TСпециально для тебя еще раз
Повторение глупости умнее не делает.
У байта нет кодировки. Это всего лишь несколько битов не больше не меньше.
Вот символы строки могут отображаться на эти биты (байты) по разному. Это на жаргоне и называется "кодировка".
...
Рейтинг: 0 / 0
25.10.2016, 12:48
    #39333503
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Сергей Арсеньев,

Сергей АрсеньевУ байта нет кодировки. Это всего лишь несколько битов не больше не меньше.
Вот символы строки могут отображаться на эти биты (байты) по разному. Это на жаргоне и называется "кодировка".
...
Рейтинг: 0 / 0
25.10.2016, 13:50
    #39333561
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Andrei TКодировка есть у байтов, а строка - это набор символов.
Еще раз!
1. у байтов кодировки нет - запиши в блокнот
2. у символов кодировка есть - это можно запомнить
...
Рейтинг: 0 / 0
25.10.2016, 14:05
    #39333577
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
am_sasa,

Ты не нервничай. Тебе и твоему альтер эго рекомендую научиться читать не по отдельным словам, а предложениями и в контексте. Никто про абстрактные байты не говорит, то что ты цитируешь относится к байтам в контексте обсуждения "кодировки строки". Кодировка строки - это её байтовое представление (байт - это в первую очередь число, а не "несколько битов не больше не меньше"). Слово "кодировка" в данном случае, для особо одаренных, означает не процесс кодировки и не функцию отображения, а закодированное состояние. Кодировка символов в JVM (числовое значение типа char) к обсуждаемому вопросу вообще не имеет отношения. Драйвер JDBC, который тут обсуждался, работает не с символами, а с байтовым представлением строки.
...
Рейтинг: 0 / 0
25.10.2016, 14:31
    #39333613
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
am_sasa,

am_sasa1. у байтов кодировки нет - запиши в блокнот
2. у символов кодировка есть - это можно запомнить

Ты себе на лоб запиши:
1) Символ - это визуальное отображение буквы, цифры, знака пунктуации, и т.п.
2) Код символа - это число, или набор байтов
3) Кодировка байтов - это система преобразования символов в числовые коды
...
Рейтинг: 0 / 0
25.10.2016, 14:37
    #39333620
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Andrei T3) Кодировка байтов - это система преобразования символов в числовые коды
Кодировка байтов - это система представления байтов в виде чего-нибудь еще (например в виде печатных символов - см. base64)
А кодировка символов - это представление символов, например, в виде байтов.

И Вы путаете сленг лингвистов со сленгом программистов при определении понятия символ. В общем, не страшно, но здесь тематический форум.
...
Рейтинг: 0 / 0
25.10.2016, 14:41
    #39333625
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Andrei T,

ну извините, если обидел.
Словосочетание "Кодировка байтов" это очень мощно...
кодировка - это таблица/процесс/алгоритм перевода байт в символы и обратно
...
Рейтинг: 0 / 0
25.10.2016, 15:34
    #39333665
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Сергей Арсеньев, am_sasa,

Товарищи, у вас проблемы либо с чтением, либо с восприятием.

Сергей Арсеньевфайл properties можно прочесть указав (явно или не очень), что он в кодировке UTF-8
Сергей АрсеньевУ байта нет кодировки
Сергей АрсеньевКодировка байтов - это система представления байтов в виде чего-нибудь еще
am_sasaСловосочетание "Кодировка байтов" это очень мощно...
Файл - это байты или не байты? Почему у файла есть кодировка, а у байтов ее нету?
...
Рейтинг: 0 / 0
25.10.2016, 15:36
    #39333666
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Сергей Арсеньев,

Сергей АрсеньевИ Вы путаете сленг лингвистов со сленгом программистов при определении понятия символ
Нда? Ну просвети меня, пожалуйста, что на сленге программистов этого форума означает "символ"?
...
Рейтинг: 0 / 0
25.10.2016, 16:06
    #39333701
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Andrei T,

Файл это файл. А символы, байткод, записи, фильмы или еще какие-нибудь объекты в нем - это как Вашей фантазии угодно.
Главное, чтобы способ кодирования этого при записи соответствовал способу декодирования при чтении. А то возможна всякая абракадабра. Именно по этому
Andrei Tу файла есть кодировка
Что в переводе со сленга означает - информация в файле записана с использованием кодировки.

P.S. Байты представляют собой последовательности бит, а те в свою очередь кодируются высоким и низким напряжением, но это уже немного из другой оперы.

Andrei TНда? Ну просвети меня, пожалуйста, что на сленге программистов этого форума означает "символ"?
Ну хотя бы как на Вики - https://en.wikipedia.org/wiki/Character_(computing)
То, что ты подразумевал под символом там называется grapheme.
...
Рейтинг: 0 / 0
25.10.2016, 16:14
    #39333710
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Andrei TФайл - это байты или не байты? Почему у файла есть кодировка, а у байтов ее нету?

Потому что это в контексте читаемых файлов. Никто это явно не произносит но имеет ввиду
У бинари файлов нет кодировки ибо это бесмысленно это набор байтов. Так же как и тестовые файлы это набор байтов.

Текстовые файлы же говорят имеют кодировку в том плане что она указывает каким образом символы преобразовали в байты при записи и как эти байты преобразовать обратно в символы чтобы получить теже символы в которых его и создавали.
...
Рейтинг: 0 / 0
25.10.2016, 16:36
    #39333740
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
llemingПотому что это в контексте читаемых файлов. Никто это явно не произносит но имеет ввиду
Мы тут изначально только в контексте читаемых (текстовых) файлов и разговариваем:
Andrei TНикто про абстрактные байты не говорит

Сергей АрсеньевФайл это файл. А символы, байткод, записи, фильмы или еще какие-нибудь объекты в нем - это как Вашей фантазии угодно.
В случае данного топика в файле текст.

Сергей АрсеньевAndrei Tу файла есть кодировкаЧто в переводе со сленга означает - информация в файле записана с использованием кодировки.
Какая религия тебе запрещает использовать речевой оборот "записаны с использованием кодировки" в отношении байтов? Сокращая по возможности до "у байтов есть кодировка" по аналогии с "у файла есть кодировка"?

Сергей АрсеньевP.S. Байты представляют собой последовательности бит, а те в свою очередь кодируются высоким и низким напряжением, но это уже немного из другой оперы.
Я в принципе и так уже понял, что у тебя словесное недержание, и что ты тут пистишь чисто ради попистеть.
...
Рейтинг: 0 / 0
25.10.2016, 16:50
    #39333751
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Andrei TКакая религия тебе запрещает использовать речевой оборот "записаны с использованием кодировки" в отношении байтов? Сокращая по возможности до "у байтов есть кодировка" по аналогии с "у файла есть кодировка"?


реально режет слух.
всякий текст на диске есть набор байтов. не всякий набор байтов на диске есть текст.

простая логика.
одно умозаключение всегда верно, второе нет.
...
Рейтинг: 0 / 0
25.10.2016, 16:53
    #39333754
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
llemingУ бинари файлов нет кодировки ибо это бесмысленно это набор байтов.
А всякие биг-эндиан, ло-эндиан ?

Zip, Gzip, Bmp, Jpeg и прочее....
...
Рейтинг: 0 / 0
25.10.2016, 17:02
    #39333766
Andrei T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
llemingреально режет слух.
Ну это, без сомнения, очень весомый аргумент
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251? / 25 сообщений из 88, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]