powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / изменение кодировки
5 сообщений из 30, страница 2 из 2
изменение кодировки
    #34557464
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда ты делаешь new String(msg.getBuffer()), - подставляется кодировка по умолчанию. То есть твой 7ми битный текст парсится как ISO-8859-1. Отсюда такая кривого вида строка.

Так как единственный доступный метод у тебя
setMessage(string, encoding);
Подозреваю что придется регистрировать свой charset.
http://forum.java.sun.com/thread.jspa?tstart=0&forumID=31&threadID=504392&trange=15

Хотя захачить либу, ИМХО, проще.
...
Рейтинг: 0 / 0
изменение кодировки
    #34557807
denissh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
y3u, весь код положить не могу, он довольно большой, СМС платформа, работа по smpp протоколу...она полностью работает, но сообщения в латинице приходиться отправлять в юникоде размером в 60 символов, что не есть рационально (это только для русского языка)...серверное приложение поддерживает только 16 бит и 7 бит...Сообщение кодированное в 7 бит не читаемо, до распаковки его обратно в 8 бит.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
   private   byte [] pack( byte [] unpacked)
  {
     int  packedLen = unpacked.length - (unpacked.length /  8 );
     byte [] packed =  new   byte [packedLen];
     int  pos =  0 ;

     int  i =  0 ;
     while  (i < unpacked.length)
    {
       int  jmax = (i +  7 ) > unpacked.length ? unpacked.length - i :  7 ;
       int  mask = 0x1;
       for  ( int  j =  0 ; j < jmax; j++)
      {
         int  b1 = ( int )unpacked[i + j] & 0xff;
         int  b2 = 0x0;
         try 
        {
          b2 = ( int )unpacked[i + j +  1 ] & mask;
        }
         catch  (ArrayIndexOutOfBoundsException x)
        {
        }

        packed[pos++] = ( byte )((b1 >>> j) | (b2 << ( 8  - (j +  1 ))));
        mask = (mask <<  1 ) |  1 ;
      }

      i +=  8 ;
    }

     return  (packed);
  }

вот функция упаковки, она работает правильно
при перевода массива байт в строку происходит
есть и кодовая таблица, но я вот не знаю как ее присобачить
...
Рейтинг: 0 / 0
изменение кодировки
    #34557816
denissh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, есть и CharsetProvider, можешь подсказать как зарегистрировать ее, и воспользоваться....а то по ссылке показано только как создать
...
Рейтинг: 0 / 0
изменение кодировки
    #34557897
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На Tue, 29 May 07 10:41:20 GMT
"denissh" <nospam@sql.ru>; записано:

> y3u, весь код положить не могу, он довольно большой, СМС платформа,
> работа по smpp протоколу...

видимо все через это прошли... :)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
изменение кодировки
    #34557930
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denisshBlazkowicz, есть и CharsetProvider, можешь подсказать как зарегистрировать ее, и воспользоваться....а то по ссылке показано только как создать

В доке к классу CharsetProvider все написано.
Можно взять
1.5.x_xx\jre\lib\charsets.jar в качестве примера.
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / изменение кодировки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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