| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > binary data в читаемый текст |
| Автор: Antarn 8.6.2008, 18:21 |
| В базе одно из полей - binary(14) , значения поля записываются как "CONVERT(binary, 'text')" . Как преобразовать это поле обратно в читаемый текст 'text' ? ( получаю через rs.getString() ) |
| Автор: LSD 8.6.2008, 23:14 | ||
|
| Автор: Antarn 9.6.2008, 07:15 | ||||
LSD, спасибо за идею. Но тогда получается лишний запрос, так как раньше я вытаскивал все поля:
а сейчас еще и
Уже полученный бинарный текст в "нормальный" нельзя преобразовать встроенными средствами ? Добавлено через 5 минут и 14 секунд p.s.: конечно можно в селекте перечислить все поля таблицы, но в той же базе есть таблица с 100+ полями и такой вариант получается не совсем удобным. |
| Автор: LSD 9.6.2008, 11:37 |
| Намеков не понимаем Телепатов тут не водится (все вымерли). Ты не сказал, но что за СУБД, ни что это за функция которая конвертирует данные, ни как именно она это делает. Потому дать совет, как это можно декодировать на клиенте - нельзя. Да и вообще ничего конкретного сказать нельзя. |
| Автор: Antarn 9.6.2008, 11:57 | ||
| LSD, пардон, думал что поля binary и класс ResultSet есть для всех баз база MSSQL. Подключаюсь через SQLServerDataSource().
Функцию, которая из binary(14) сделает читаемый текст, я и ищу, так как к примеру rs.getString("name") получает "61666473660000000000000000000000" , а я хочу видеть "vaseapupkin". Как это преобразовать ? Что еще забыл указать для полноты картины ? |
| Автор: Antarn 9.6.2008, 12:37 | ||
| Всё, разобрался: такой запрос
вернёт ряд, где последнее поле text и есть удобоваримый текст. LSD, спасибо |
| Автор: LSD 9.6.2008, 12:45 | ||||
| Уже веселей Получить не строку а байты можно так:
как из них получить строку, зависит от того как работает функция CONVERT. Судя по описанию, она просто преобразует строку в байты, вопрос только в том, в какой кодировке она это делает. Из байтов получить строку можно так:
|
| Автор: Antarn 9.6.2008, 14:25 | ||
| CONVERT оказывается преобразовывала символы в их хекс-значение. То есть строка "afdsf" становилась "0x6166647366" (61 - a, 66 - f, 64 - d, 73 - s). Я преобразовал обратно вот так:
Может есть другой, лучший способ ? |
| Автор: LSD 9.6.2008, 17:24 |
CONVERT не преобразовывает символы в их HEX коды. Он преобразовывает их в байты, а вот уже байты драйвер преобразует в HEX коды когда ты вызываешь getString(). Как получить байты и как из байтов получить строку я тебе уже показал. Вопрос только в кодировке. |