Emilian Abadjiev wrote:
George Danchev wrote:
On 22 01 2003 16:19, Kliment Ognianov wrote:
  
Emilian Abadjiev wrote:
    
Dori da inicializiraneto na String-a ot Unicode na CP1251, to pri
kompilirane Java-ta 6te syzdade edin i sy6ti rezultaten class tyj kato
wytre6no si pazi String-owete w UCS-2.

Kak moga da smenia encoding-a w titlebar-a?
      

проблема с българицата е в JVM-то май или графичните библиотеки, кажи кое JVM 
ползваш да интерпретва байткодето (или компилатор ползваш?). Калоян Доганов 
може да помогне за това как работи http://cyrcho.sf.net например... за повече 
незнам...
  
Пробвал съм с различни JDK-та включително Sun-ските 1.3.1, 1.4 i 1.4.1 и IBM-ските 1.3 и 1.4.
  
Nnnne znam, tuk smenih Unicode codes s normalni si kirilishki bukvi i
    

епа Unicode поддържа всички известни ни азбуки в рамките на нашата Галактика 
вкл. и всички кирилски азбуки се вместват в него и пак има място да адресира 
още такива ...

  
sraboti .... ne vqrvam da e ot tipa na OSa: FreeBSD
    

същия проблем требе да имаш и ти комшо ако си с Sun Java 2 version =< 1.4 
;-).... я кажи кое JVM (производител и точна версия) ползваш на FreeBSD 
(нативно ли е?), че скоро имаше идея за FreeBSD native такава от JavaSoft май 
... 
  
Наистина сработва ако техта е в CP1251, но пък се прецаква етикета (JLabel). Това е така, защото като се компилира с:
   javac TestFrame.java или javac -encoding ISO-8859-1 TestFrame.java се прецакват стринговете в CP1251, ако се компилира с правилният параметър (-encoding CP1251) се получават същите "?????????" в titlebar-a. Понеже Java-та е със затворен код, много ми се иска да мога да пипна някъде window's titlebar encoding-a под Линукс и нещата да си дойдат на мястото.
Направих една модификация предишният пример на базата на горните разсъждения, която показва "истинска" кирилица в titlebar-a. На мен ми се вижда доста "хакерско" и не ме радва, но все пак е някакво решение за под Линукс. Както се и очакваше не сработи с IBM-ското JDK 1.4.

import javax.swing.JFrame;

import javax.swing.JLabel;

public class TestFrame {

    static String title_1 = "АБВГД";
    static String title_2 = "\u0410\u0411\u0412\u0413\u0414";

    public static void main(String[] args) throws Exception {
        System.out.println(title_1 + " " + title_2);

        JFrame frame = new JFrame();
        frame.setTitle(fixTitle(title_1) + " " + fixTitle(title_2));
        frame.setSize(300, 100);
        JLabel label = new JLabel(title_1 + " " + title_2);
        frame.getContentPane().add(label);
        frame.show();
    }

    public static String fixTitle(String title) {
        String osName;

        if ((osName = System.getProperty("os.name")) != null) {
            if (osName.toLowerCase().indexOf("linux") != -1) {
                try {
                    return new String(title.getBytes("CP1251"), "ISO-8859-1");
                } catch (java.io.UnsupportedEncodingException e) {}
            }
        }

        return title;

    }

}
============================================================================ A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers). http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html ============================================================================


Reply via email to