Gå til innhold

[Løst] Innlesing fra kommandolinje gjennom String[] args


Anbefalte innlegg

Hei

 

Forsøker meg litt på Java og tenkte å bruke String[] args i main-metoden for å lese argumenter fra kommandolinja. Problemet er at norske bokstaver og alle andre uvanlige tegn (æ, ǫ, π eller noe så lett som é) gjøres om til spørsmålstegn. Fant noen kodelinjer som lar meg skrive ut igjen argumentene, men det hjelper ikke så mye når poenget er å bruke dem.

 

Jeg kjører:

java Tull "søk etter jǫrð"

 

Programkode:

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;

public class Tull {
public static void main(String[] args) throws UnsupportedEncodingException {
	System.out.println(args[0]);
	PrintStream ut = new PrintStream(System.out, true, "UTF-8");
	ut.println(args[0]);
}
}

 

Programmet gir:

s?k etter j?r?
søk etter jǫrð

 

Både terminalvinduet og fila bruker UTF-8. Jeg kan skrive System.out.println("æøå"); uten problemer, men det er altså det jeg leser inn som blir helt galt.

 

Ser følgende løsninger, men aner ikke åssen jeg får det til:

  1. Få Java til å skjønne at det er UTF-8-tekst den leser fra terminalen
  2. Konvertere args[] fra UTF-8 til UTF-16 eller hva Java måtte finne på å bruke internt
  3. Få PrintStream til å sende teksten til en variabel som jeg kan bruke istedenfor å skrive teksten ut igjen i terminalvinduet

 

Håper noen kan hjelpe meg med dette.

Endret av 9E2
Lenke til kommentar
Videoannonse
Annonse

Denne funket på min enkle testcase:

 

private static String convert(String source, String fromEncoding, String toEncoding) throws UnsupportedEncodingException {
   return new String(source.getBytes(fromEncoding), toEncoding);
}

 

(merk at new String(byte[], encoding) kan gi uforutsette resultater dersom du bruker den på bytestream som ikke er komplett, f.eks ved innlesning fra fil)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...