как сохранить/преобразовать/найти кодировку мессаги
От: progma137  
Дата: 08.10.08 18:47
Оценка:
есть строка на русском языке с целыми числами. codepage=windows-1251 или СР1251 если быть точнее
есть програмный код на яве(привожу ниже)
результат: некоректное(на мой взгляд) отображение выделеных посимвольно символов(смотрел в консольном окне в IDE).
код взят из моего jar-приложения написаного на NetBeans 5.5.1
задача: отделить целые числа от строки методом посимвольного определения принадлежности к разряду чисел.
з.ы. может есть какой альтернативный метод да я не нашел его???
public void str2int_mas(String s){
    /**переходим на битовую обработку
     */
    try {
      System.out.println("Вхожу в начало цикла...");
      byte buf2[] = s.getBytes("CP1251");//перевожу в битовый массив потому что по другому незнаю как дальше обработать
      String S = new String();
      int y,i=0;
      byte i1=124,i2;
      java.util.Stack<Byte> st = new java.util.Stack<Byte>();
      System.out.println("---------------------"+buf2.length);
      while(i<buf2.length){
        y = i;
        while(java.lang.Character.isDigit((char)buf2[y])){
          st.push(buf2[y]);//вносим все нужные нам битовые значения цифер
          //S=S.concat(java.lang.Byte.toString(buf2[y]));
          System.out.println(y + " - " + (char)buf2[y]);
          y++;
        }
        if(i!=y) {
          st.push(i1);
          //S=S.concat("|");
          i = y;
        }
        i++;
        System.out.println("Контрольная точка - ["+i+"]='"+buf2[i]+"' ch='"+(char)buf2[i]+"'");
      }
      System.out.println("Досюдова дошел???");
      while (st.empty()==false){
        i2 = st.pop();
        System.out.print((char)i2);
      }
      System.out.println("\n-------------------");
      msg3 = S;
      System.out.println(msg3);
      /*теперь в строковом массиве подряд через "|" номера нужных нам цифер.*/
    } catch (UnsupportedEncodingException ex) {
      ex.printStackTrace();
      System.out.println("Варнинг!!! - "+ex.getMessage());
    }
  }
update
Re: как сохранить/преобразовать/найти кодировку мессаги
От: . Великобритания  
Дата: 08.10.08 22:02
Оценка:
Здравствуйте, progma137, Вы писали:


P> byte buf2[] = s.getBytes("CP1251");//перевожу в битовый массив потому что по другому незнаю как дальше обработать

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#charAt(int)
или java.util.regex
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: как сохранить/преобразовать/найти кодировку мессаги
От: progma137  
Дата: 12.10.08 15:55
Оценка:
ммм сначала не понял как его применить, но потом понял.
скажите, а "выуженые" таким образом символы из строки сохраняют кодировку?
update
Re[3]: как сохранить/преобразовать/найти кодировку мессаги
От: Аноним  
Дата: 12.10.08 17:58
Оценка:
Здравствуйте, progma137, Вы писали:

P>ммм сначала не понял как его применить, но потом понял.

P>скажите, а "выуженые" таким образом символы из строки сохраняют кодировку?

Коллега, почитайте про String, будет легШе на душе.

Все хранится в UTF-16.

Из String-а можете перевести в байты в любимую кодировку, ну и String создать по байтам с указанием кодировки.

Предупреждая Ваш вопрос — на вход в метод str2int_mas(String s), кстати, славное французко-нижегородское название, так вот, на входе строка тоже в UTF-16. Так что применением regexp-a Вы ничего не испортите. Взгляните еще в сторону
java.util.Scannerеще о Scanner, вдруг понравится больше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.