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

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


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

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

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

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


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

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

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

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


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