powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ну очень сложная задача для мосКа
16 сообщений из 16, страница 1 из 1
ну очень сложная задача для мосКа
    #37622321
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача такова:
есть могучая и великая БД, не буду говорить откуда она у меня и как досталась но есть, самая главная проблема в том, что сам сервер (а это Sybase) считает что хранит он данные в кодировке CP850 (эта кодировка не понимает русские символы), а данные которые хранятся имеют кодировку CP866 (даже и не спрашивайте почему это так, но это так)
собственно вопрос как отображать русский при помощи Java (когда я делал интерфейс для этой БД на PHP я юзал iconv и был рад что работает, но в java так у меня не получается)
подскажите хоть куда рыть то...
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37622339
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37622341
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще преобразование кодировок в Java родное:
http://stackoverflow.com/questions/229015/encoding-conversion-in-java

А как именно вы использовали iconv, с какими параметрами?
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37622359
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv,
там подключение через FreeTDS и получение дефолтной кодировки, без перекодирования,
ну собственно я и перекодирую iconv('CP866', 'UTF-8', 'строка')
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37622362
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv,
собственно тут я тоже хотел сделать именно так но похоже jTDS сам преобразует кодировку, и получает кроказябры в итоге...
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37622540
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне подсказали и делается этот изврат так:
String s1 = new String(res.getString(i).getBytes("CP850"),"CP866");
если меня хоть кто-то ткнет носом почему именно так я просто незнаю расцелую его =)
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37622614
Revision
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338мне подсказали и делается этот изврат так:
String s1 = new String(res.getString(i).getBytes("CP850"),"CP866");
если меня хоть кто-то ткнет носом почему именно так я просто незнаю расцелую его =)


мне кажется, сибасе сама должна конвертировать кодировки на выдачу, достаточно указать в конфиг-файле этот параметр
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37622618
Revision
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37623121
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не проблема Java или СУБД. У Вас сервер ЗНАЕТ, что данные должны храниться в Cp850. Реально, Вы можете Выбрать в каком-либо клиентском приложении практически любую кодировку, подготовить там данные и загрузить их в БД. Но Сервер не знает в КАКОЙ РЕАЛЬНОЙ кодировке данные ему подставляются и он рассматривает входной поток байт в кодировке Cp850. Аналогично Java знает от Вашего Сервера, что на вход ей поступят данные в кодировке 850. Откуда ей знать о реальной ? Вот и приходится в таких случаях для строковых данных использовать getBytes. Накладно для СУБД хранить данные в UTF-8 вот и приходится извращаться.
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37623248
Revision
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery ShiskinЭто не проблема Java или СУБД. У Вас сервер ЗНАЕТ, что данные должны храниться в Cp850. Реально, Вы можете Выбрать в каком-либо клиентском приложении практически любую кодировку, подготовить там данные и загрузить их в БД. Но Сервер не знает в КАКОЙ РЕАЛЬНОЙ кодировке данные ему подставляются и он рассматривает входной поток байт в кодировке Cp850. Аналогично Java знает от Вашего Сервера, что на вход ей поступят данные в кодировке 850. Откуда ей знать о реальной ? Вот и приходится в таких случаях для строковых данных использовать getBytes. Накладно для СУБД хранить данные в UTF-8 вот и приходится извращаться.

что накладного в хранении в утф-8 ?
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37623424
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Revision,
еще бы великий sybase клиент понимал кодировку CP866 дк я бы ваще не парился =), но дело в том что он ее не знает
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37624188
Revision
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338Revision,
еще бы великий sybase клиент понимал кодировку CP866 дк я бы ваще не парился =), но дело в том что он ее не знает

не может быть, чтобы он ее не понимал

http://www.rusug.ru/index.php?tree=4&mode=view&id=75
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37624191
Revision
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338Revision,
еще бы великий sybase клиент понимал кодировку CP866 дк я бы ваще не парился =), но дело в том что он ее не знает


ах.. ты про клиента.. так можно задать, наверное, конверт из сибасе в клиент в той кодировке, которую клиент понимает и пускай трансформация делается базой данных
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37867681
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для потомков оставлю небольшой коммент =)

ежели у вас такая вот проблема то используйте стандартный драйвер jconn3 или jconn2
на этих тестировал все заработало, он нормально стал конвертить и туда и обратно

jTDS не поддерживает кодировку CP866, но тут единственный обход, конвертить все ручками
(шо на мой взгляд полнейшее издевательство проще пристрелить админа БД с этим извратом)
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37868082
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338jTDS не поддерживает кодировку CP866, но тут единственный обход, конвертить все ручками
(шо на мой взгляд полнейшее издевательство проще пристрелить админа БД с этим извратом)
jTDS при работе с Sybase вообще какой-то кривой. Мы пытались его использовать, но в итоге перешли на jconn4.
...
Рейтинг: 0 / 0
ну очень сложная задача для мосКа
    #37868558
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv,

не знаю на счет как там кривость, у меня он работал без проблем, единственно что кодировку не понимает,
а jconn3 я использую так как Sybase ну очень старый....
а jconn4 уже поддерживает Sybase ASE начиная с 12.5 так что рисковать я не хочу =)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / ну очень сложная задача для мосКа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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