![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Преобразование строк UNICODE. [Win2k, WinXP]
Владислав © (2005-10-25 11:47:00)Приветствую, мастера.
Суть проблемы в следующем.
Есть сервис, который получает данные из некоего COM сервера в виде строк UNICODE. После получения этих строк, они обрабатываются, как бинарные данные (никаких преобразований не делается). Если точнее, строки пишутся в поток.
После получения всех необходимых данных от COM сервера, поток, в котором сохранены данные, отправляется через сокет клиенту, написанному на perl на сервере linux. Поток также отправляется без каких либо преобразований. Данные, записанные в поток, я проверял. Ничего необычного. Строки, представленные двубайтовыми символами.
Далее, perl клиент обрабатывает поток, извлекает нужные данные, выполняет нужные ему действия.
Проблема в том, что строки на русском языке нечитаемы на сервере linux. При попытке преобразовать строки на perl клиенте в ucs2 и utf-16 big endian, можно прочесть часть русских символов, а часть остается нечитаема.
Возможно изложил немного сумбурно. Если этой информации недостаточно для локализации проблему, буду признателен, если натолкнете на мысль, какую дополнительную информацию нужно дать.
А вопрос, собственно, такой. Какие изменения я могу сделать в сервисе, или какие изменения нужно сделать в клиенте, чтобы в итоге информация была читаема?
Спасибо за любые советы.
Владислав (2005-10-28 12:50:00) [1]
> Alex Konshin © (28.10.05 12:37) [9]
> Перепиши на Java то, что было на perl. Проблема пропадет
> сама собой.
Спасибо за предложение, но, мягко говоря, это не моя забота. В данной ситуации мне проще изменить сервис.
Alex Konshin (2005-10-28 12:37:00) [2]Перепиши на Java то, что было на perl. Проблема пропадет сама собой.
Владислав (2005-10-28 10:42:00) [3]Спасибо всем ответившим.
"Перлист" не справился с перекодировкой.
Переписываем все для однобайтовой кодировки.
dmitry501 (2005-10-25 12:48:00) [4]Если ничего не хочется менять, то нужно настраивать клиентов linux на эту кодировку. Какая кодировка? Для двухбайтового юникода может надо просто поставить UTF-16?
Владислав (2005-10-25 12:29:00) [5]Надеюсь, что восточные не используются.
Эта сторона COM сервера никак не документирована.
Но и это еще не все. Сам сервис в сокет не долько данные передает, но и команды из сокета получает, и результат выполнения отправляет. Они кодированы в UNICODE. Не хотелось бы менять и все остальное при переходе на однобайтовые символы.
clickmaker (2005-10-25 12:25:00) [6]а там что, восточные языки используюцца? тогда причем тут русский?
Владислав (2005-10-25 12:24:00) [7]Боюсь потерять информацию при перекодировании.
clickmaker (2005-10-25 12:22:00) [8]почему? какая разница, что в сокет писать?
Владислав (2005-10-25 12:20:00) [9]Перлу не нужен именно юникод.
Но меня терзают смутные сомнения при мысли преобразовывания информации в однобайтовые строки.
clickmaker (2005-10-25 12:17:00) [10]а перлу нужен именно уникод?