Java Desktop Application - kódovanie

Programovacie jazyky, rady, poradňa...
pitbullko
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 294
Registrovaný: 13 nov 2009, 8:19
Bydlisko: „Keby som bol postavený pred rozhodnutie medzi zbabelosťou a násilím, zvolil by som násilie“[Gandhi]

Java Desktop Application - kódovanie

Príspevok od používateľa pitbullko »

Ahojte,
chcem vás poprosiť o pomoc. Už druhý deň sa trápim s problémom kódovania.
Jedná sa o to, že som načítal staré *.dbf súbory pomocou knižnice cez konzolovú aplikáciu a uložil som ich do *.txt súborov.
Tieto *.txt súbory sú uložené v UTF-8. Pôvodné súbory *.dbf boli pravdepodobne v kódovaní ISO8859. V nových *.txt súboroch, keď ich otvorím v notepade sú už špeciálne znaky ako napr. Φ, °, ... nahradené inými symbolmi resp., písmenami. Prvý problém je, keď spustím desktopovú aplikáciu vo swingu cez netbeans tak znaky z *.txt súborov sa zobrazujú inak ako keď si vytvorím spustiteľnú *.jar aplikáciu a tú spustím priamo vo Windowse.
Keď som hľadal na internete, tak som našiel, že JVM sa snaží kódovať do defaultného kódovania systému, čo je v mojom prípade UTF-8 ale vnútorne by mala Java pracovať s Unicode. Ja som tieto vymenené znaky v txt súbore nahradil dobrými ale zobrazili sa dobre iba keď som spustil aplikáciu cez netbeans.
Vedel by mi niekto poradiť ako tam tie znaky dostať, aby sa zobrazovali správne aj keď to bude spustiteľná aplikácia pod Windowsom?
Dík
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: Java Desktop Application - kódovanie

Príspevok od používateľa javatar »

ked tvoris OutputStreamWriter tak mas v jednom z konstruktorov moznost menit kodovanie
http://download.oracle.com/javase/1.4.2 ... riter.html
je to treti konstruktor - a pouiziva sa to asi takto new OutputStreamWriter (new FileOutputStream(new File(path)),"UTF8");

google pomoze viac
pitbullko
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 294
Registrovaný: 13 nov 2009, 8:19
Bydlisko: „Keby som bol postavený pred rozhodnutie medzi zbabelosťou a násilím, zvolil by som násilie“[Gandhi]

Re: Java Desktop Application - kódovanie

Príspevok od používateľa pitbullko »

to už som skúšal. Ja ten znak proste neviem zobraziť. Textové súbory sú kódované v UTF-8, napíšem tam znak Φ.
Tento znak sa mi však vypíše správne iba keď aplikáciu spustím cez netbeans. Je to desktopová aplikácia keď ju pustím vo Windowse kde mám kódovanie UTF-8, už je znak nesprávny.
Ja už fakt netuším, ako keby to kódovalo v niečom inom keď to spustím priamo vo Windowse.
Prílohy
Aplikácia spustená cez netbeans
Aplikácia spustená cez netbeans
screen_1.jpg (8.29 KiB) 600 zobrazení
Aplikácia spustená vo windowse
Aplikácia spustená vo windowse
screen_2.jpg (8.12 KiB) 600 zobrazení
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: Java Desktop Application - kódovanie

Príspevok od používateľa javatar »

Skor by som povedal ze sa to sprava ako ina lokalizacia UTF8... zmysel UTF8 je totiz natlacit vsetky pouzivane znaky do 8-bitov, takze netbeans vyuzivali UTF8-en a windows UTF8-sk

bud pouzi ine kodovanie (UTF 16) alebo neakym sposobom nadefinuj to UTF8-en - google mi velmi nepovedal a casu velmi vela nemam...
pitbullko
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 294
Registrovaný: 13 nov 2009, 8:19
Bydlisko: „Keby som bol postavený pred rozhodnutie medzi zbabelosťou a násilím, zvolil by som násilie“[Gandhi]

Re: Java Desktop Application - kódovanie

Príspevok od používateľa pitbullko »

... skúsim, dám vedieť. Zatiaľ dík

//autoeditácia príspevku (16 Jún 2011, 9:32)
Skúšal som nejaké ďalšie veci. javatar mal si pravdu, JVM používa znakovú sadu, podľa windowsu, resp. lokalizácie.
Zistil som, že v netbeanse je kódovanie UTF8 a windows používa znakovú sadu cp1250. Súbory sú UTF8, preto mi to šlo v netbeanse bez problémov.
Problém je vo windowse, pretože JVM sa snaží kódovať znaky do cp1250, čo je znaková sada pre strednú a východnú Európu a táto znaková sada neobsahuje znaky ako Φ, °, ...
Problém je ten, že zatiaľ neviem ako mám prinútiť JVM aby nepoužívala kódovanie Win ale napr. UTF8.
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: Java Desktop Application - kódovanie

Príspevok od používateľa javatar »

v akej komponente zobrazujes ten text?
pitbullko
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 294
Registrovaný: 13 nov 2009, 8:19
Bydlisko: „Keby som bol postavený pred rozhodnutie medzi zbabelosťou a násilím, zvolil by som násilie“[Gandhi]

Re: Java Desktop Application - kódovanie

Príspevok od používateľa pitbullko »

zobrazujem v jTable a jTextField. Nerozumiem prečo JVM v prípade spustenia v netbeanse nepoužíva znakovú sadu Win ale znakovú sadu netbeansu....
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: Java Desktop Application - kódovanie

Príspevok od používateľa javatar »

lebo netbeans pouziva jdk a jre ktore je sucastou jdk pricom windows osobitnu instalaciu jre (pravdepodobne)

skus jTextField1.setText(new String(jTextField1.getText().getBytes(),"utf-8")); -betonarske riesenie ale malo by fungovat...
pitbullko
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 294
Registrovaný: 13 nov 2009, 8:19
Bydlisko: „Keby som bol postavený pred rozhodnutie medzi zbabelosťou a násilím, zvolil by som násilie“[Gandhi]

Re: Java Desktop Application - kódovanie

Príspevok od používateľa pitbullko »

funguje! veľká vďaka :)
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: Java Desktop Application - kódovanie

Príspevok od používateľa javatar »

v tom pripade si na kazdu komponentu implementuj listener kde pri zmene spustis len dany kod... nech sa s tym zbytocne neseries sam a mas to na jednom mieste

//2000. prispevok :smt112 a dokonca ma uzitocnu informacnu hodnotu :lol:
Napísať odpoveď