Java, DOS, Unicode, TextPad, æ, ø og å
Norske tegn (æ, ø, å, Æ, Ø og Å) kan fremdeles skape problemer, f.eks. ved utskrift med println fra Java-applikasjoner i DOS. Denne siden gir noen tips for å håndtere dette.
Vi ønsker å kunne:
- Lagre og redigere Java kildekode med tegnsett Unicode (UTF-8).
- Kjøre Java-program slik at norske tegn blir vist korrekt - både fra kommandolinjen i DOS og direkte fra en editor som Textpad.
Bakgrunnsinformasjon om tegnsett
Kortversjonen er at Java er basert på Unicode, mens DOS bruker et eldre tegnsett basert på Ascii, og det er dette som skaper problemene nevnt over. Et tegnsett er en tilordning av tallkoder til forskjellige tegn. Unicode (ny) og Ascii (gammel) er to tegnsett. UTF-8 er en konkret måte å kode Unicode på, der man bruker flere byter (et variabelt antall) for å representere ett tegn. En såkalt "Windows codepage" er omtrent det samme som et tegnsett. I DOS-vinduet er codepage 850 standard, og her brukes 1 byte for å kode hvert tegn (som betyr at man får færre tegn tilgjengelig). Mer utfyllende informasjon:
Redigere kildekode i TextPad
TextPad kan settes opp til å bruke UTF-8 for Java-filer:
- Sett UTF-8 som standard tegnsett (Default encoding) i meny Configure | Preferences | Document classes | Java. Huk også av for Write Unicode and UTF-9 BOM i samme meny.
- Java-filer skal da automatisk bli lagret i tegnsett UTF-8. Man kan også bestemme tegnsett UTF-8 eksplisitt under menyvalget Save As.
Enten du laster ned Java-filer lagret i UTF-8 fra nettet, eller klipper-og-limer fra nettsider på UTF-8 format, så skal norske tegn i kildekoden nå bli vist korrekt.
Vise Unicode-filer i DOS-vinduet
Filer (Java-filer eller andre tekstfiler) som er lagret i UTF-8 og inneholder norske tegn blir i utgangspunktet ikke vist korrekt i DOS-vinduet (hvis man f.eks. bruker DOS-kommandoen type). Gjør følgende:
- Endre font i DOS-vinduet fra standard rasterskrift til Lucida Console. Dette gjøres fra menyen Egenskaper | Skrift.
- Endre til Unicode codepage: chcp 65001. Man kan endre tilbake til standard codepage med chcp 850, og se hva som er valgt codepage med chcp.
- Vis fil lagret i Unicode med: type fil.txt
Utskrift med norske tegn fra Java i DOS-vinduet
Java-program kan kompileres fra DOS-vinduet med verktøyet javac og kjøres med verktøyet java. For å håndtere norske tegn i utskrift med println:
- Bruk vanlig codepage i DOS-vindu (ved evt. endring kan man tilbakestille med chcp 850).
- Kompilere Java-filer på UTF-8 format: javac -encoding utf8 *.java
- Be JVM om å oversette til codepage 850 ved bruk av println: java -Dfile.encoding=Cp850 JavaProg
Kompilere og kjøre Java fra TextPad
TextPad kan settes opp med egne menyvalg for å kompilere og kjøre Java-program under DOS. Disse er synlige under meny Tools | External Tools, og kan evt. også gjøres tilgjengelige som knapper på menylinjen. Utskrift av norske tegn fungerer imidlertid ikke korrekt når Java kompileres/kjøres på denne måten.
For korrekt håndtering av norske tegn kan man lage sine egne kommandoer for å kjøre og kompilere:
- I meny Configure | Preferences | Tools, velg Add og DOS Command. Oppgi javac som kommando. Gå etterpå inn i samme meny, velg javac og endre parameters til: javac $File -encoding utf8
- I meny Configure | Preferences | Tools, velg Add og DOS Command. Oppgi java som kommando. Gå etterpå inn i samme meny, velg java og endre parameters til: java $BaseName -Dfile.encoding=Cp850
- Gjør verktøyene synlige på menylinjen med View | Toolbars | Tools. Til høyre for verktøyknappene er det en nedtrekksliste der man kan huke av for hvilke knapper som skal vises.
Det ser ikke ut til å være mulig å gjøre tilsvarende endring av de "innebygde" Java-knappene i Textpad (de blir kjørt "direkte" og ikke startet som en DOS-kommando).