Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Апплет и кодировка! Не работает win-1251 на кнопке 
V
    Опции темы
Cross
Дата 4.5.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


информатик-аналитик
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 2.6.2006
Где: Москва

Репутация: нет
Всего: 1



Здравствуйте!

У меня после переустановки системы появилась проблема:

в апплете на кнопке почему-то вместо русских букв отображаются квадратики.
Причем при запуске апплета из под Eclipse - с буквами все нормально.
Проблемы начинаются при запуске апплета в браузере (проверяла и в FireFox, и в IE 7.0)

Привожу фрагмент кода!

Код

public void start() {
        
        Button b = new Button("Построить график функции");

        b.addActionListener(this);
        add(b);
        c1 = new Float(2.92); 
        c2 = new Float(-1.46);
        r1 = new Float(2.2);
        r2 = new Float(1.26);
        int m = 1; 
        data = setFunction(START, END, SHAG, MNOZH, c1,c2,r1,r2,m);
        min = minValue(data);
        System.out.println(min);
    }


Код запуска апплета:

Код

<applet  
code="mitraGraphicClass.class" archive="myTest.jar" width = "600" height = "300" name="mitraGraphicClass" mayscript="true">
</applet>

PM MAIL ICQ Skype MSN   Вверх
Arahnus
Дата 17.5.2009, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 12.5.2009

Репутация: нет
Всего: нет



Такая же проблема, но еще и с TextArea.

Код

//package untitled1;
import java.util.*;
import java.io.*;
import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import borland.jbcl.layout.*;
import borland.jbcl.control.*;

public class sv1 extends Applet implements ActionListener{
  XYLayout xYLayout1 = new XYLayout();
  boolean isStandalone = false;
  public String msg;
  Button get,put,getT,putT;
  TextArea ta;


  //Get a parameter value
  public String getParameter(String key, String def) {
    return isStandalone ? System.getProperty(key, def) :
      (getParameter(key) != null ? getParameter(key) : def);
  }

  //Construct the applet
  public sv1() {
  }

  //Initialize the applet
  public void init() {
    try { jbInit(); } catch (Exception e) { e.printStackTrace(); }
  setLayout(new FlowLayout(FlowLayout.CENTER));
  Button get = new Button("Get");
  Button put = new Button("Put");
  Button getT = new Button("GetTxt");
  Button putT = new Button("PutTxt");
  Button prop = new Button("Property");
  setLayout(new FlowLayout(FlowLayout.LEFT));

  ta=new TextArea("пример текста",10,30); // <-- Пишет абракадаброй

  add(ta);
  add(put);
  add(get);
  add(getT);
  add(putT);
  add(prop);
  String tt=ta.getText();

  get.addActionListener(this);
  //
  put.addActionListener(this);
  putT.addActionListener(this);
  getT.addActionListener(this);

  }
  public void actionPerformed(ActionEvent ae){
   String str=ae.getActionCommand();

   if(str.equals("Get"))ta.setText(getByt());
   else if(str.equals("Put"))putByt(ta.getText());
   else if(str.equals("GetTxt"))ta.setText(getTxt());
   else if(str.equals("PutTxt"))putTxt(ta.getText());

   repaint();
  }
  //Component initialization
  public void jbInit() throws Exception{
    xYLayout1.setWidth(400);
    xYLayout1.setHeight(300);
    this.setLayout(xYLayout1);
  }

  //Start the applet
  public void start() {
  }

  //Stop the applet
  public void stop() {
  }

  //Destroy the applet
  public void destroy() {
  }

  //Get Applet information
  public String getAppletInfo() {
    return "Applet Information";
  }

  //Get parameter info
  public String[][] getParameterInfo() {
    return null;
  }
  public void paint(Graphics g){


  g.drawString(msg,10,100);
  }
  public void putTxt(String s){
   try{
   ByteArrayOutputStream f=new ByteArrayOutputStream();
   byte b[]=s.getBytes();
   f.write(b);
   b=f.toString("Windows-1251").getBytes("Windows-1251");
   f.reset();
   f.write(b);
   OutputStream f2=new FileOutputStream("text_for_java.txt");
   f.writeTo(f2);
   f2.close();
   }catch(IOException e){}
  }
  
  public String getTxt(){
   String t="";
   try{

    InputStream f2=new FileInputStream("text_for_java.txt");
    int a= f2.available();
    byte b[]=new byte[a];
    DataInputStream bao=new DataInputStream(f2);

    bao.read(b);

    //ta.setText(new String(b,"UTF8"));
    t+=new String(b);
    bao.close();
    }
    catch(IOException ioe){}

  return t;
  }


  public void putByt(String t){
    try{
    //String t=ta.getText();
    byte buf[]=t.getBytes("Windows-1251");
    //byte buf[]=t.getBytes();
    OutputStream f2=new FileOutputStream("text_for_java.dat");
    DataOutputStream bao=new DataOutputStream(f2);

    bao.writeBytes(new String(buf,"Windows-1251"));
     //bao.writeBytes(t);
    bao.close();
    }
    catch(IOException ioe){}
  }

  public String getByt(){
   String t="";
   try{

    InputStream f2=new FileInputStream("text_for_java.dat");
    int a= f2.available();
    byte b[]=new byte[a];
    DataInputStream bao=new DataInputStream(f2);

    bao.read(b);

    //ta.setText(new String(b,"UTF8"));
    t+=new String(b,"Windows-1251");
    bao.close();
    }
    catch(IOException ioe){}

  return t;
  }

  //Main method
  static public void main(String[] args) {
    sv1 applet = new sv1();
    applet.isStandalone = true;
    DecoratedFrame frame = new DecoratedFrame();
    frame.setTitle("Аплет LEV.SU");
    frame.add(applet, BorderLayout.CENTER);
    applet.init();
    applet.start();
    //applet.paint();
    frame.pack();
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);
    frame.setVisible(true);
  }
}




В форме TextArea текст вводиться с клавиатуры вот так ïðèìåð
Код компилил на JBuilder 1.1 
Конечно устаревшая вешь но по идее это ведь не должно играть роли.
PM MAIL   Вверх
Arahnus
Дата 17.5.2009, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 12.5.2009

Репутация: нет
Всего: нет



Получается что кодировка локали и кодировка аплета различаются.

Только вот как узнать в какой кодировке работает аплет?

Вот это кодировка локали:
Код

String pp=System.getProperty("file.encoding");


На винде показывает Cp1251 но проблему не решает
Исходный код тоже в Cp1251. По крайней мере в ней сохраняется.
При попытке перекодировать в ISO8859_1 текст вообще пропадает

Это сообщение отредактировал(а) Arahnus - 17.5.2009, 18:31
PM MAIL   Вверх
math64
Дата 19.5.2009, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: нет
Всего: 72



Строка находится в исходнике - смотрите кодировку исходника
PM   Вверх
Arahnus
Дата 26.5.2009, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 12.5.2009

Репутация: нет
Всего: нет



Цитата

Строка находится в исходнике - смотрите кодировку исходника


Исходник сохраняется в Cp1251
Тоесть кодировка исходника та же. Ладно, похоже это зависит от среды выполнения Так как настройки JBuilder 1.1  тоже так же абракадаброй пишет.
PM MAIL   Вверх
math64
Дата 27.5.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: нет
Всего: 72



Сравнивай кодировку компилятора и кодировку редактора - они у тебя различаются
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Апплеты | Следующая тема »


 




[ Время генерации скрипта: 0.0754 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.