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


Автор: andrewjr20 13.1.2013, 22:45
Добрый день.
Возникла проблема в клиентской части клиент-серверного приложения. 
Изначально на клиенте (MIDP 2.0, CLDC 1.0) получение данных от сервера выполнял таким образом:

Код

private int[] intPhoneCharDiv = {(int)'А' - 192, (int)'Ё' - 168, (int)'ё' - 184};
...
while (c = is.read() != -1)
{
  if (c < 0) {
    c += 256;
  }
  if (c > 191 && c < 256) 
  {
    c += intPhoneCharDiv[0];
  } 
  else if (c ==168) 
  {
    c += intPhoneCharDiv[1];
  } 
  else if (c == 184) 
  {
    c += intPhoneCharDiv[2];
  }
    sb.append((char) c);
}

То есть каждый символ проверялся, чтобы корректно отработать и при необходимости преобразовать некоторые кириллические символы.
Теперь решил перевести этот кусок кода на такую конструкцию:
Код

byte[] inputBuffer = new byte[is.available()];
is.read(inputBuffer);
sb.append(new String(inputBuffer, "Cp1251"));

На эмуляторе код отрабатывает корректно, а на живой сотке на кодировку ругается, UnsupportedEncodingException. Вычитал, что для избежания такого нужно подключать lib/charsets.jar, и импортировать java.nio.charset - но для уровня 1.3 это неприменимо (ввели только в 1.4). Как можно поступить?

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