Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > String -> byte[]


Автор: TyVik 6.11.2005, 20:30
st = bodyText.getString();
try{
b = st.getBytes("CP1251");
} catch(IOException io){}
надо преобразовать текст (строку) в массив байт. Такая конструкция всегда выдаёт ошибку smile
Может, аргумент не тот? Какие сюда можно ставить?

Автор: batigoal 6.11.2005, 20:43
Ошибку компиляции или выполнения?

Поддерживается ли кодировка с таким именем - "CP1251"? Не знаю, зависит ли она от регистра, но, может, попробовать "cp1251"?
Добавлено @ 20:44
Цитата(TyVik @ 6.11.2005, 21:30)
Может, аргумент не тот? Какие сюда можно ставить?

Вроде тот, судя по документации. Правда, я смотрю доку по J2SE.

Цитата
public byte[] getBytes(String charsetName)
                throws UnsupportedEncodingException

    Encodes this String into a sequence of bytes using the named charset, storing the result into a new byte array.

Автор: TyVik 6.11.2005, 22:45
эх, решил переделать - поставил, что б UTF-строку передавал. Работает smile))
Но TheBat! этой кодировки явно не знает :/

Автор: javastic 7.11.2005, 10:54
UTF-8 не понимает? smile

Автор: TyVik 7.11.2005, 15:40
Угу...
Закорючками показывает русский текст, а с латиницей всё пучком! ;)

Автор: KostenkoSergey 7.11.2005, 17:43
Код

        switch (symbol){
          case 'а' : s.append("\u0100");/*а*/;break;
          case 'б' : s.append("\u0101");/*б*/;break;
          case 'в' : s.append("\u0102");/*в*/;break;
          case 'г' : s.append("\u0103");/*г*/;break;
          case 'д' : s.append("\u0104");/*д*/;break;
          case 'е' : s.append("\u0105");/*е*/;break;
          case 'ё' : s.append("\u0105");/*е*/;break;
          case 'ж' : s.append("\u0106");/*ж*/;break;
          case 'з' : s.append("\u0107");/*з*/;break;
          case 'и' : s.append("\u0108");/*и*/;break;
          case 'й' : s.append("\u0109");/*й*/;break;
          case 'к' : s.append("\u010a");/*к*/;break;
          case 'л' : s.append("\u010b");/*л*/;break;
          case 'м' : s.append("\u010c");/*м*/;break;
          case 'н' : s.append("\u010d");/*н*/;break;
          case 'о' : s.append("\u010e");/*о*/;break;
          case 'п' : s.append("\u010f");/*п*/;break;
          case 'р' : s.append("\u0110");/*р*/;break;
          case 'с' : s.append("\u0111");/*c*/;break;
          case 'т' : s.append("\u0112");/*т*/;break;
          case 'у' : s.append("\u0113");/*у*/;break;
          case 'ф' : s.append("\u0114");/*ф*/;break;
          case 'х' : s.append("\u0115");/*х*/;break;
          case 'ц' : s.append("\u0116");/*ц*/;break;
          case 'ч' : s.append("\u0117");/*ч*/;break;
          case 'ш' : s.append("\u0118");/*ш*/;break;
          case 'щ' : s.append("\u0119");/*щ*/;break;
          case 'ъ' : s.append("\u011a");/*ъ*/;break;
          case 'ы' : s.append("\u011b");/*ы*/;break;
          case 'ь' : s.append("\u011c");/*ь*/;break;
          case 'э' : s.append("\u011d");/*э*/;break;
          case 'ю' : s.append("\u011e");/*ю*/;break;
          case 'я' : s.append("\u011f");/*я*/;break;
          default : s.append(symbol);
        }

попробуй выполнить такой код и простым методом getBytes() получить массив байт
... в случае с дос кодировкой должно работать...
я эти ютф символы использовал когда клиент ютф не поддерживал, а мне через соап надо было русские символы пропихнуть...
правда размер письма в два раза увеличится, потому как один байт будет лишним, но он клиентом надеюсь у тебя будет игнориться ....
потому как для однобайтовых кодировок важен толи первый, толи последний байт ...

ЗЫ а что БАТ серьёзно ютф не тянет ?

Автор: TyVik 8.11.2005, 16:12
ЛОЛ smile)))
Смеялся долго - рульная задумка smile)))
З.Ы. а хз, может вампир просто не настроен...

Автор: KostenkoSergey 8.11.2005, 16:33
а чё смешного ?
я понимаю что через попу, но иногда по другому никак. smile

Автор: javastic 8.11.2005, 16:58
Цитата(TyVik @ 7.11.2005, 15:40)
Угу...
Закорючками показывает русский текст, а с латиницей всё пучком! ;)

Эта, вспомнил ещё одну фичу. Если ты русский текст редактировал например через какую-либо софтину в которой кодировка не win стоит, а пытаешься потом декодировать через win, то в обломе будешь.
Тому пример Far он по умолчанию включает при редактировании cp866 (естественно я вижу что пишу по русски), потом в мидлете пытаюсь декодировать в win1251, а он мне закарючки выдаёт. Естественно нужно кодировать и декодировать в одной кодировке. Просто иногда не задумываешься какая стоит кодировка в софте (просто видишь что русский) через который вбиваешь текст.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)