[Megoldva] Java - Unicode

Fórumok

Sziasztok.

Hátha valaki tudja a megoldást..

A problémám, hogy java-ban (swing) Linux alatt, nem minden Unicode karakter jelenik meg.

Amit eddig kinyomoztam:
- a Java unicode támogatása smafu, mert se a sun-os se a diszto-s csomagok nincsennek bekonfigurálva,
hogy unicode-s font készletet (unifont) használjon (linux alatt)
- a SUN oldalán eljutottam a "fontconfig.properties" fájl leírásáig, de nem sikerült vele rávenne a jre-t
hogy használja is a beállított fontot

A legfőbb probléma, hogy "kívülről" kell beállítanom az alkalmazás által használt fontot.

Megoldas:
A fontconfig.properties fajl szerkesztese a megoldas.. csak ne legy akkora okor mint en, hogy
a font path-ba egy betuvel tobbet irsz bele.:)

Hozzászólások

Én még csak most tanulom a java-t, de épp a napokban csodálkoztam rá arra, hogy 16 bites unicode karaktereket használ, tehát nem UTF8, meg nem latin1 és ez azért tök jó, mert nem kell küzdeni a karakterkódolással.

Nem lehet, hogy a használt font nem tartalmazza az adott karaktert?

Azt hiszem ez talán segít:

sampleJList = new JList(entries);
sampleJList.setVisibleRowCount(4);
Font displayFont = new Font("Serif", Font.BOLD, 18);
sampleJList.setFont(displayFont);

hello,

En eddig ugy tapasztaltam, hogy a host oprendszernek kell tudnia.
En debian-t hasznalok, ott van egy utfmigrationtool csomag, azt kell lefuttatni root-kent is meg egyszeru usekent is.

Ha lekerdezed a LANG kornyezeti valtozot, akkor ilyesmit kell latnod:
set | grep LANG
LANG=hu_HU.UTF-8

Nem nyertetek.

1. Kívülről: azaz nincs lehetőség a kód farigcsálására
2. Attól, mert a rendszer locale UTF-8, attól még a megfelelő
unicode font készlet nélkül nem tudja még a java sem kirajzolni a
megfelelő fontot.
Ez egy megfelelő demonstrációra: http://mindprod.com/jgloss/fontshower.html

Az UTF16 nem epp a legjobb valasztas. Egyreszt egyre biztosabb, hogy a jovo az UTF8-e. Masreszt az UTF16 legfeljebb 16 biten tud abrazolni, mig az UTF8 jelenleg akar negy bytos karakterek megjelenitesere is alkalmas, es ez kesobb bovulhet.
Az UTF8 teljesen lefedi az UTF16-ot, igy ameddig csak UTF16-os karakterek kellenek, igazabol mindegy. De van egy-ket kinai nyelvjaras, ami miatt bizony sz0pn1 kell Java-ban is a karakterkodolassal. Az UTF8 sokkal nyerobb lett volna.

--
The Net is indeed vast and infinite...
http://gablog.eu

> Egyreszt egyre biztosabb, hogy a jovo az UTF8-e

Az UTF-8 kommunikációra, adatcsere formátumnak nyerő. Itt a nyelv belső sztringábrázolásáról van szó, ahol a változó szélesség viszonylag sok szívást okoz.

> Masreszt az UTF16 legfeljebb 16 biten tud abrazolni

Nem. Olvass doksit.

Igazad van, az UTF-16 is valtozo bajthosszusagu. De a Java ezt nem tamogatja teljesen.

A problema az, hogy Java-ban a char tipus per definition 16 bit (amit ha jol sejtem a vilag vegeig supportalni akarnak), igy ket bajtnal hosszabb Unicode karakterekkel megutheted a bokad. Ameddig egy streamben, Stringben van, ez nem zavar vizet, de ha mar elemenkent akarod feldolgozni, akkor erre kulon figyelmet kell szentelni, hogy nem feltetlenul minden char egy karakter.

http://weblogs.java.net/blog/joconner/archive/2004/04/unicode_40_supp.h…

--
The Net is indeed vast and infinite...
http://gablog.eu