Xpoint
   [напомнить пароль]

Кодировка UTF16 UTF8

Метки: [без меток]
2007-08-14 14:18:27 [обр] wan[досье]

Привет Всем.

НЕ обходимо сделать ICQ бота все сообщения от необходимо записывать в базу
в кодировке UTF8

Для реализации использую модуль use Net::OSCAR.

Дело в том что от клиентов сообщения приходят в кодировке UTF16. С
конвертировать вообщем-то не проблема, но тут я столкнулся с проблемой

все сообщения на русском , китайском и т п. языках конвертируются
нормально. Как выяснилось потому что один символ кодируется двумя байтами. А
вот символы приходящие в латинице Английский, французский и т. п. кодируется
одним байтом и вот тут возникает проблема в нормальном виде кодировке UTF16
в латинице в 16 виде между символами вставляется 00 пример слово "for" в
нормальном виде выглядит вот так 66 00 6F 00 72 00 а вот в мой бот приходит
вот в такой форме 66 6F 72

тоесть без 00 и это не проблема Net::OSCAR я смотрел анализатором пакетов
так уже отправляется от клиента.

модули перекодирования не понимают такую модификацию модуль ICONV
отказывается перекодировать а Encode в китайский. Каким образом отличать
латиницу пока не знаю .

Есть идеи по реализации такого конвертирования?

спустя 1 час 16 минут [обр] Роман Чемисов(56/327)[досье]
wan[досье]
А почему Вы решили, что у Вас UTF16? Может это UTF8?
спустя 20 часов [обр] wan[досье]

Точно так и есть Слона то и не заметил
вот только как теперь правильно определить в какой кодировке приходит ведь если Пишут на китайском или русском то приходит в UTF16 а если в латинице то в UTF8.

Пока писал решил поэкспериментировать с немецким языком слово für(по середине u с точками) в бота прихоти вот так 66 FC 72 хотя нормальный вид в кодировке UTF8 это имеет вид 66 С3 ВС 72 а в UTF16 имеет вид 66 00 FC 00 72 и соответственно не может быть правильно декодироваться.

Вопрос остался прежним как определить правильно кодировку и почему латиница не правильно определяется.

Powered by POEM™ Engine Copyright © 2002-2005