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
============================================================================