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


Автор: EleGant 7.7.2008, 11:54
Помогите дописать программу...суть в следующем:
Программа работает так, включаешь, она заходить в Инет по опред. адресу где лежит ТХТ файл, берет от туда инфу и выводит на дисплей.
Проблема в том что я не могу заставить её выводить корректно русские символы. 
Кто напишет допишет мне эту программу дам 25 wmz!!

Прилагаю файл! Он работает нормально! Нужно сделать что бы он научился понимать по-русски

В настройках Wireless указать User Defined:
Name - HitMIDlet.URL
Value - http://drc.kz/soft/qwe.txt

Жду помощи!

Добавлено @ 12:01
Хорошо было бы использовать http://forum.vingrad.ru/faq/topic-217050/kw-ование-windows-шрифтов.html программу для шрифтов..но это по вашему желанию

Автор: Walera 7.7.2008, 12:51
public class Locale {
    static String CharArr = "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u0098\u2122\u0459\u203A\u045A\u045C\u045B\u045F\u00A0\u040E\u045E\u0408\u00A4\u0490\u00A6\u00A7\u0401\u00A9\u0404\u00AB\u00AC\u00AD\u00AE\u0407\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7\u0451\u2116\u0454\u00BB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F";
    
    public static char getChar(byte b) {
        if (b>=0) return (char) b; else{
            return CharArr.charAt(b & 0x7f);
        }
    }

    static String Windows1251ToUTF(byte[] Text, int aLen){
        int num = 0;
        StringBuffer result = new StringBuffer();
        for (int i = 0; i < aLen; i++){
            result.append(getChar(Text[i]));

        }
        return result.toString();
    }

Создавай строку при помощи функции Windows1251ToUTF(<Твой массив байтов(букв)>, <Длина массива>)

Автор: EleGant 7.7.2008, 13:03
Я не умею этого делать..я вообще почти ничего не соображаю в J2ME поэтому и прошу помощи

Автор: EleGant 8.7.2008, 21:11
Walera, ты можешь мне программу доконца написать помочь не за бесплатно!

Автор: Shurik16 10.7.2008, 01:54
Код

import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class HelloMIDlet    extends MIDlet 
    implements CommandListener {
  private Display mDisplay;
  private Form mMainForm;
  private StringItem mMessageItem;
  private Command mExitCommand, mConnectCommand;
  public static String CharArr = "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030" +
          "\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022" +
          "\u2013\u2014\u0098\u2122\u0459\u203A\u045A\u045C\u045B\u045F\u00A0\u040E" +
           "\u045E\u0408\u00A4\u0490\u00A6\u00A7\u0401\u00A9\u0404\u00AB\u00AC\u00AD" +
           "\u00AE\u0407\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7\u0451\u2116" +
           "\u0454\u00BB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415" +
           "\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421" +
           "\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D" +
           "\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439" +
           "\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445" +
           "\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F";
  public HelloMIDlet() {
    mMainForm = new Form("HitMIDlet");
    mMessageItem = new StringItem(null, "");
    mExitCommand = new Command("Exit", Command.EXIT, 0);
    mConnectCommand = new Command("Connect",
        Command.SCREEN, 0);
    mMainForm.append(mMessageItem);
    mMainForm.addCommand(mExitCommand);
    mMainForm.addCommand(mConnectCommand);
    mMainForm.setCommandListener(this);
  }
  
  public void startApp() {
    mDisplay = Display.getDisplay(this);
    mDisplay.setCurrent(mMainForm);
  }
  
  public void pauseApp() {}
  
  public void destroyApp(boolean unconditional) {}
  
  public void commandAction(Command c, Displayable s) {
    if (c == mExitCommand)
      notifyDestroyed();
    else if (c == mConnectCommand) {
      Form waitForm = new Form("Waiting...");
      mDisplay.setCurrent(waitForm);
      Thread t =  new Thread() {
        public void run() {
          connect();
        }
      };
      t.start();
    }
  }
  
  private void connect() {
    HttpConnection hc = null;
    InputStream in = null;
    String url = getAppProperty("URL");
    
    try {
      hc = (HttpConnection)Connector.open(url);
      in = hc.openInputStream();

      int contentLength = (int)hc.getLength();
      byte[] raw = new byte[contentLength];
      int length = in.read(raw);

      in.close();
      hc.close();

      // Show the response to the user.
      String s = Windows1251ToUTF(raw,raw.length);
      mMessageItem.setText(s);
    }
    catch (IOException ioe) {
      mMessageItem.setText(ioe.toString());
    }
    mDisplay.setCurrent(mMainForm);
  }
    
    
    public static char getChar(byte b) {
        if (b>=0) return (char) b; else{
            return CharArr.charAt(b & 0x7f);
        }
    }

    static String Windows1251ToUTF(byte[] Text, int aLen){
        int num = 0;
        StringBuffer result = new StringBuffer();
        for (int i = 0; i < aLen; i++){
            result.append(getChar(Text[i]));

        }
        return result.toString();
    }
}


Добавлено через 2 минуты и 56 секунд
программа

Автор: EleGant 12.7.2008, 08:10
Не пашет.. выдал java.io.IO.Exception:-4157
а в файле какой кодировкой должно быть написано?

Автор: Shurik16 14.7.2008, 02:45
http://drc.kz/soft/qwe.txt - Я использова этот файл для проверки. Кодировка ANSI.

Автор: EleGant 14.7.2008, 22:11
Ну да, файл этот..а как кодировку указать??


Как в НетБинсе в визуальном редакторе связать объект из List с другим Ява Классом? smile 

Автор: eugine_s 14.7.2008, 23:01
Цитата(EleGant @  14.7.2008,  22:11 Найти цитируемый пост)
Как в НетБинсе в визуальном редакторе связать объект из List с другим Ява Классом?



Почитай http://skipy.ru/philosophy/visualDesigners.html

Автор: EleGant 15.7.2008, 10:58
Прочитал статью...
Все понял...
Но у меня есть свое мнению, что визуальные ср-ва разработке облегчают, но полностью отказываться от них тоже не стоит как и всегда ими пользоваться...
в своей просьбе я хотел что бы мне помогли решить мою проблему програмно, а не визуально..

Автор: EleGant 15.7.2008, 21:31
 smile  smile  

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